sphinx-apidoc 选择子模块,但 autodoc 不记录它们
sphinx-apidoc picks up submodules, but autodoc doesn't document them
我一直在为 PyQt5(在此处找到:https://github.com/MaVCArt/StyledPyQt5)开发一个项目,该项目使用包结构使导入更合乎逻辑。到目前为止,我在使用 Sphinx 记录代码方面相对成功,至少在我介绍包结构之前是这样。 (之前,所有内容都在一个文件夹中)
问题如下:当我运行sphinx-apidoc时,一切运行都很好,没有错误。更重要的是,autodoc 可以很好地获取我所有的子模块。这是我的一个 .rst 文件的内容:
styledpyqt package
==================
Subpackages
-----------
.. toctree::
:maxdepth: 8
styledpyqt.core
Submodules
----------
styledpyqt.StyleOptions module
------------------------------
.. automodule:: styledpyqt.StyleOptions
:members:
:undoc-members:
:show-inheritance:
styledpyqt.StyleSheet module
----------------------------
.. automodule:: styledpyqt.StyleSheet
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: styledpyqt
:members:
:undoc-members:
:show-inheritance:
正如您所见,所有子模块都被拾取了。
然而,当我 运行 对此做出 html 时,none 这些模块正在 记录 (意思是 headers 在那里,但是 none 的方法,类 或成员被显示)。在生成的 HTML 中,它们只是 headers,下面什么也没有。我知道它们已在代码注释中正确设置,因为从现在到包结构的设置,也就是文档起作用时,代码没有改变。
有人知道这可能是什么原因吗?
注意:为了帮助解决这个问题,这里是我的文件夹结构的简短细分:
styledpyqt
+ core
+ + base
+ + + __init__.py ( containing a class definition )
+ + + AnimationGroups.py
+ + + Animations.py
+ + __init__.py
+ + Color.py
+ + Float.py
+ + Gradient.py
+ + Int.py
+ + String.py
+ __init__.py
+ StyleOptions.py
+ StyleSheet.py
我最终解决了这个问题 - 似乎我忽略了一些错误,而 sphinx 工作得很好。我在 conf.py 中添加了包中包含的所有路径,它只是从那里开始工作:
conf.py:
sys.path.insert(0, os.path.abspath('../StyledPyQt5'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt/core'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt/core/base'))
从那里开始,一切正常。
这里需要特别注意的是,我在与我的代码不同的目录中生成我的文档。如果您使用 sphinx-apidoc 来生成您的 .rst 文件,并且您正在使用 gh-pages 分支来制作文档,请不要忘记在您打开时单独生成您的 HTML 页面主分支。否则,将不会有任何代码来源。我的工作流程现在看起来像这样:
- 通过 运行ning
git checkout master
确保我在主分支上
- 运行
sphinx-apidoc -F -P -o ..output_dir ..source_dir
,其中 output_dir 与 source_dir. 不同
- 运行
make html
,确保 _build/html 所在的目录不在我的仓库的任何一个分支中。
- 运行
git checkout gh-pages
切换到我的 gh-pages 分支,删除代码文件并将其替换为 html 文档页面。
- 将 _build/html 中所有新生成的 HTML 文件复制到 gh-pages 主文件夹,覆盖任何更改。
- 运行
git commit -am "Docs Update" gh-pages
提交更改
- 运行
git push origin gh-pages
将提交推送到 github
- 运行
git checkout master
让我回到 master 分支
我知道有很多教程对此进行了记录,但我希望这个简短的阐述可能会在某些时候对某些人有所帮助。
我有一个类似的问题,通过更改 toctree 的最大深度并重建 html,浏览器中的可视化没有任何变化。我通过首先删除相关的 .rst 文件并重新运行 sphinx-apidoc [OPTIONS] -o <OUTPUT_PATH> <MODULE_PATH> [EXCLUDE_PATTERN …]
命令解决了这个问题。之后,我使用 make html
重建了 html 文件。浏览器中的可视化最终达到了预期效果。
我一直在为 PyQt5(在此处找到:https://github.com/MaVCArt/StyledPyQt5)开发一个项目,该项目使用包结构使导入更合乎逻辑。到目前为止,我在使用 Sphinx 记录代码方面相对成功,至少在我介绍包结构之前是这样。 (之前,所有内容都在一个文件夹中)
问题如下:当我运行sphinx-apidoc时,一切运行都很好,没有错误。更重要的是,autodoc 可以很好地获取我所有的子模块。这是我的一个 .rst 文件的内容:
styledpyqt package
==================
Subpackages
-----------
.. toctree::
:maxdepth: 8
styledpyqt.core
Submodules
----------
styledpyqt.StyleOptions module
------------------------------
.. automodule:: styledpyqt.StyleOptions
:members:
:undoc-members:
:show-inheritance:
styledpyqt.StyleSheet module
----------------------------
.. automodule:: styledpyqt.StyleSheet
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: styledpyqt
:members:
:undoc-members:
:show-inheritance:
正如您所见,所有子模块都被拾取了。
然而,当我 运行 对此做出 html 时,none 这些模块正在 记录 (意思是 headers 在那里,但是 none 的方法,类 或成员被显示)。在生成的 HTML 中,它们只是 headers,下面什么也没有。我知道它们已在代码注释中正确设置,因为从现在到包结构的设置,也就是文档起作用时,代码没有改变。
有人知道这可能是什么原因吗?
注意:为了帮助解决这个问题,这里是我的文件夹结构的简短细分:
styledpyqt
+ core
+ + base
+ + + __init__.py ( containing a class definition )
+ + + AnimationGroups.py
+ + + Animations.py
+ + __init__.py
+ + Color.py
+ + Float.py
+ + Gradient.py
+ + Int.py
+ + String.py
+ __init__.py
+ StyleOptions.py
+ StyleSheet.py
我最终解决了这个问题 - 似乎我忽略了一些错误,而 sphinx 工作得很好。我在 conf.py 中添加了包中包含的所有路径,它只是从那里开始工作:
conf.py:
sys.path.insert(0, os.path.abspath('../StyledPyQt5'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt/core'))
sys.path.insert(0, os.path.abspath('../StyledPyQt5/styledpyqt/core/base'))
从那里开始,一切正常。
这里需要特别注意的是,我在与我的代码不同的目录中生成我的文档。如果您使用 sphinx-apidoc 来生成您的 .rst 文件,并且您正在使用 gh-pages 分支来制作文档,请不要忘记在您打开时单独生成您的 HTML 页面主分支。否则,将不会有任何代码来源。我的工作流程现在看起来像这样:
- 通过 运行ning
git checkout master
确保我在主分支上
- 运行
sphinx-apidoc -F -P -o ..output_dir ..source_dir
,其中 output_dir 与 source_dir. 不同
- 运行
make html
,确保 _build/html 所在的目录不在我的仓库的任何一个分支中。 - 运行
git checkout gh-pages
切换到我的 gh-pages 分支,删除代码文件并将其替换为 html 文档页面。 - 将 _build/html 中所有新生成的 HTML 文件复制到 gh-pages 主文件夹,覆盖任何更改。
- 运行
git commit -am "Docs Update" gh-pages
提交更改 - 运行
git push origin gh-pages
将提交推送到 github - 运行
git checkout master
让我回到 master 分支
我知道有很多教程对此进行了记录,但我希望这个简短的阐述可能会在某些时候对某些人有所帮助。
我有一个类似的问题,通过更改 toctree 的最大深度并重建 html,浏览器中的可视化没有任何变化。我通过首先删除相关的 .rst 文件并重新运行 sphinx-apidoc [OPTIONS] -o <OUTPUT_PATH> <MODULE_PATH> [EXCLUDE_PATTERN …]
命令解决了这个问题。之后,我使用 make html
重建了 html 文件。浏览器中的可视化最终达到了预期效果。