我希望Sphinx文档的左侧菜单包含我项目的模块,并且我希望从主模块的__init__.py
文件中定义此内容。这就是我正在尝试的:
__init__.py
'''
Components platform:
--------------------
* language: python
* rest framework: flask-restful
* testing: pytest
* documentation: sphinx
.. toctree::
:maxdepth: 1
:caption: Contents:
.. automodule:: sacbeh.main
.. automodule:: sacbeh.api
.. automodule:: sacbeh.controllers
'''
问题是,当我运行make html
时,我会得到以下错误:
/Users/hugovillalobos/Documents/Code/sacbeh-project/sacbeh-backend/sacbeh/__init__.py:docstring of sacbeh:9: WARNING: toctree contains reference to nonexisting document '.. automodule:: sacbeh.main'
/Users/hugovillalobos/Documents/Code/sacbeh-project/sacbeh-backend/sacbeh/__init__.py:docstring of sacbeh:9: WARNING: toctree contains reference to nonexisting document '.. automodule:: sacbeh.api'
/Users/hugovillalobos/Documents/Code/sacbeh-project/sacbeh-backend/sacbeh/__init__.py:docstring of sacbeh:9: WARNING: toctree contains reference to nonexisting document '.. automodule:: sacbeh.controllers'
我还没有找到实现这一目标的方法。
编辑
我知道它不是这样工作的。我已经用rest文件让它工作了,但我正在努力找到一种用尽可能少的额外文件记录我的项目的方法,所以我想尽可能多地使用文档字符串。
我相信我的问题是正确的,但不一定可行。
.. toctree::
指令中的每一行都被称为条目。条目不能为autodoc
指令。
您有4个条目选项:
条目
toctree中的文档标题将自动从引用文档的标题中读取。
-
只需使用不带扩展名的文件名作为条目。
.. toctree:: file_name_without_the_rst_extension
条目
(…(您可以使用类似于reST超链接的语法指定明确的标题和目标
-
与上面相同,但为条目指定成本标题。
.. toctree:: Whatever title you want to write <file_name_without_the_rst_extension>
其他选项
通过提供glob标志选项,您可以在toctree指令中使用"globbing"。然后将所有条目与可用文档列表进行匹配,并按字母顺序将匹配项插入到列表中。
(…(
这首先包括所有名称以介绍开头的文档,然后是配方文件夹中的所有文档,最后是所有剩余文档(当然,包含指令的文档除外(
-
一个glob模式。可以是目录的内容,也可以是部分文件名的所有匹配项。
.. toctree:: :glob: intro* recipe/* *
其他选项
特殊条目名称
self
代表包含toctree指令的文档。如果你想从toctree生成一个"站点地图",这很有用。或
-
条目也可以是特殊名称
self
,在这种情况下,包含toctree的.rst
被添加为条目。.. toctree:: self
-
有一个未记录的功能是使用上面在点(2.(中解释的语法添加
http://
链接作为条目;Sphinx-toctree指令中的外部相对链接";
话虽如此,这个问题在几个方面都是不正确的。
-
不能将
.. automodule::
添加为.. toctree::
条目。(如上所述(。 -
您不应该将
.. toctree::
放在文档字符串中。这在概念上是错误的,文档字符串用于记录它们被设置为__doc__
属性的对象的API(签名加简短注释(。
以上已经是一个冗长的解释,但我认为真正解决问题的是:
- 记录
__init__.py
文件的情况很少见。主要原因是,使用您的代码/文档的人不会写:from __init__ import something
,对吧
解决方案是什么?此:
your_package.rst
文件(在Python中,包也是一个模块(应该如下所示,您可以在其中记录类。您不必在__init__.py
中放入docstring,但您确实需要有一个与放置..automodule::
指令的包相对应的.rst
文件。
------------
your_package
------------
.. automodule:: sacbeh.main
:members:
.. automodule:: sacbeh.api
:members:
.. automodule:: sacbeh.controllers
:members:
链接上述your_package.rst
的index.rst
应该如下所示:
-----
index
-----
.. toctree::
:maxdepth: 1
:caption: Contents:
your_package