狮身人面像autodoc不够自动

我正在尝试使用Sphinx在Python中logging5,000多个项目。 它有大约7个基本模块。 据我所知,为了使用autodoc,我需要为我的项目中的每个文件编写这样的代码:

.. automodule:: mods.set.tests :members: :show-inheritance: 

这太繁琐了,因为我有很多文件。 如果我可以指定我希望logging“mods”包,那将会容易得多。 狮身人面像然后可以recursion地通过包并为每个子模块制作一个页面。

有这样的function吗? 如果没有,我可以编写一个脚本来创build所有的.rst文件,但这将花费很多时间。

你可以查看我制作的脚本 。 我认为它可以帮助你。

这个脚本parsing一个目录树,寻找python模块和包,并适当地创buildReST文件来创buildSphinx的代码文档。 它也创build一个模块索引。

UPDATE

这个脚本现在是Sphinx 1.1 aspidoc的一部分

我不知道狮身人面像是否在原始问题被提出的时候已经有了autosummary延伸,但是现在很有可能不使用sphinx-apidoc或类似的脚本来设置这种自动生成。 下面有一些适用于我的项目的设置。

  1. conf.py文件中启用autosummary扩展(以及autodoc ),并将其autosummary_generate选项设置为True 。 如果您不使用自定义*.rst模板,这可能就足够了。 否则,添加您的模板目录排除列表,或autosummary将尝试将它们视为input文件(这似乎是一个错误)。

     extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary'] autosummary_generate = True templates_path = [ '_templates' ] exclude_patterns = ['_build', '_templates'] 
  2. 在你的index.rst文件的目录树中使用autosummary:: 。 在这个例子中,模块project.module1project.module2文档将自动生成并放置到_autosummary目录中。

     PROJECT ======= .. toctree:: .. autosummary:: :toctree: _autosummary project.module1 project.module2 
  3. 默认情况下, autosummary将只为模块及其function生成非常简短的摘要。 要改变,你可以把一个自定义的模板文件放到_templates/autosummary/module.rst (它将被Jinja2parsing):

     {{ fullname }} {{ underline }} .. automodule:: {{ fullname }} :members: 

总之,不需要将_autosummary目录保存在版本控制下。 另外,你可以将它命名为任何你想要的东西,并把它放在源代码树的任何地方( _build把它放在_build下面_build行不通的)。

在每个包中, __init__.py .. automodule:: package.module文件可以为.. automodule:: package.module的每个部分提供.. automodule:: package.module组件。

那么你可以.. automodule:: package ,它主要是你想要的。

也许你正在寻找的是Epydoc和这个狮身人面像扩展 。