Sphinx,使用自动模块查找子模块

时间:2012-07-16 16:12:42

标签: python-sphinx

使用sphinx的自动模块时(http://sphinx.pocoo.org/ext/autodoc.html#directive-automodule),

我只是写一个.rst文件:

.. automodule:: my_module
    :members:

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

另外,我知道sphinx-apidoc。但是这个命令文件太多了(暴露了包含无证件的每个函数/文件夹)。

2 个答案:

答案 0 :(得分:30)

听起来你想给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
              ...

答案 1 :(得分:1)

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

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

编辑:可能是known bug