狮身人面像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
或类似的脚本来设置这种自动生成。 下面有一些适用于我的项目的设置。
-
在
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']
-
在你的
index.rst
文件的目录树中使用autosummary::
。 在这个例子中,模块project.module1
和project.module2
文档将自动生成并放置到_autosummary
目录中。PROJECT ======= .. toctree:: .. autosummary:: :toctree: _autosummary project.module1 project.module2
-
默认情况下,
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和这个狮身人面像扩展 。