36

使用 sphinx 的自动模块 ( https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html ) 时,

我只是写在一个 .rst 文件中:

.. automodule:: my_module
    :members:

它很好地记录了 my_module,但没有找到像 my_module.inner_module0 和 my_module.inner_module1 这样的内部模块。除了 __all__ 变量之外,是否需要在 __init__.py 文件中指定一些内容?

另外,我知道sphinx-apidoc. 但是该命令的文档太多了(暴露了每个函数/文件夹,包括未记录的函数/文件夹)。

4

2 回答 2

41

听起来你想给automodule指令一个包名,让它递归到目录中并记录每个 Python 模块。这还不支持。您将需要为要记录的每个模块指定完整的点分模块名称。

例如,给定以下目录结构(来自 Python 文档)。您不能指定.. automodule:: sound.formats并让它记录目录中的所有模块。您必须automodule为每个模块指定一个命令:.. automodule:: sound.formats.waveread.. automodule:: sound.formats.wavewrite等。

sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
于 2012-07-19T19:49:58.107 回答
5

在我看来,如果导入这些子模块,现在应该可以使用该:imported-members:选项(非直接链接,使用搜索)。__init__.py

但是,我个人无法完成这项工作(还)。

编辑:可能是一个已知的错误

于 2017-03-27T10:31:40.187 回答