【发布时间】:2018-12-07 10:52:26
【问题描述】:
我有一个关于 Sphinx 自动文档生成的问题。我觉得我想做的事情应该很简单,但由于某种原因,它不起作用。
我有一个 Python 项目,其目录名为 slotting_tool。该目录位于C:\Users\Sam\Desktop\picnic-data-shared-tools\standalone\slotting_tool
我使用 sphinx-quickstart 设置了 Sphinx。那么我的目录结构(简化)如下:
slotting_tool/
|_ build/
|_ source/
|___ conf.py
|___ index.rst
|_ main/
|___ run_me.py
现在,我通过将以下内容添加到conf.py 文件中,将我的项目的根目录设置为slotting_tool。
import os
import sys
sys.path.insert(0, os.path.abspath('..'))
接下来,我将我的index.rst 文件更新为如下所示:
.. toctree::
:maxdepth: 2
:caption: Contents:
.. automodule:: main.run_me
:members:
当尝试使用sphinx-build -b html source .\build 命令构建我的html 时,我得到以下输出,带有no module named 错误:
(base) C:\Users\Sam\Desktop\picnic-data-shared-tools\standalone\slotting_tool>sphinx-build -b html source .\build
Running Sphinx v1.8.1
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: [] 0 added, 1 changed, 0 removed
reading sources... [100%] index
WARNING: autodoc: failed to import module 'run_me' from module 'main'; the following exception was raised:
No module named 'standalone'
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 1 warning.
The HTML pages are in build.
构建中没有引用 run_me.py 的 HTML 页面。我尝试将我的根目录设置为所有不同类型的目录,并尝试将所有点 . 替换为反斜杠 \ 等等,但似乎无法找出我做错了什么。
顺便说一句,standalone 不是模块的说法实际上是正确的,它只是一个没有__init__.py 的目录。不知道会不会有什么麻烦?
有人有想法吗?
【问题讨论】:
-
我认为你的直觉是正确的。添加一个空的 init.py 并查看导入警告是否消失。
-
我尝试添加了
__init__.py,但这也不能解决错误。您知道其他可能导致此错误的原因吗? -
没有看到您的代码,我假设 run_me.py 尝试独立导入但失败。我需要查看代码。
-
Sphinx 将尝试导入您的所有代码,就像在 Python 解释器中运行它一样。修复您的导入或在 conf.py 中使用 sys 指定不可导入代码的路径。
-
您的模块必须位于 Sphinx 可以导入的 Python 包中。您需要将该模块与一个空的
__init__.py文件一起放在一个文件夹中(从而使其成为 Python 包),并在您的conf.py中配置该路径,以便 Sphinx 可以导入它。
标签: python python-3.x python-sphinx autodoc