繁体   English   中英

sphinx-apidoc 获取子模块,但 autodoc 没有记录它们

[英]sphinx-apidoc picks up submodules, but autodoc doesn't document them

我一直在为 PyQt5(在此处找到: https://github.com/MaVCArt/StyledPyQt5 )开发一个项目,该项目使用 package 结构来使导入更合乎逻辑。 到目前为止,我在使用 Sphinx 记录代码方面相对成功,至少在我引入 package 结构之前是这样。 (以前,一切都在一个文件夹中)

以下是问题:当我运行 sphinx-apidoc 时,一切运行正常,没有错误。 更重要的是,autodoc 可以很好地获取我所有的子模块。 这是 my.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:

如您所知,所有子模块都被拾取。

但是,当我对此运行 make html 时,这些模块都没有被记录(意味着标头在那里,但没有显示任何方法、类或成员)。 在生成的 HTML 中,它们只是标头,下面没有任何内容。 我知道它们已在代码注释中正确设置,因为从现在到 package 结构的设置,也就是文档起作用时,代码没有改变。

有谁知道这可能是什么原因?

注意:为了帮助解决这个问题,这里是我的文件夹结构的简短细分:

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 中添加了包包含的所有路径,它只是从那里开始工作:

配置文件:

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 分支作为文档,请不要忘记在 master 分支上单独生成 HTML 页面。 否则,将不会有任何代码来源。 我的工作流程现在看起来像这样:

  1. 通过运行git checkout master确保我在 master 分支上
  2. 运行sphinx-apidoc -F -P -o ..output_dir ..source_dir ,其中 output_dir 与 source_dir 不同。
  3. 运行make html ,确保 _build/html 位于不在我的 repo 的任一分支中的目录中。
  4. 运行git checkout gh-pages切换到我的 gh-pages 分支,删除代码文件并用 html 文档页面替换它们。
  5. 将 _build/html 中所有新生成的 HTML 文件复制到 gh-pages 主文件夹,覆盖任何更改。
  6. 运行git commit -am "Docs Update" gh-pages以提交更改
  7. 运行git push origin gh-pages将提交推送到 github
  8. 运行git checkout master让我回到 master 分支

我知道有很多教程记录了这一点,但我希望这个小小的阐述可能会在某些时候对某人有所帮助。

我有一个类似的问题,通过更改 toctree 的最大深度并重建 html,浏览器中的可视化没有任何变化。 我通过首先删除 concerned.rst 文件并重新运行sphinx-apidoc [OPTIONS] -o <OUTPUT_PATH> <MODULE_PATH> [EXCLUDE_PATTERN …]命令解决了这个问题。 之后,我使用make html重建了 html 文件。 浏览器中的可视化比最终预期的要好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM