如何将自动模块添加到狮身人面像toctree中



我希望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中的文档标题将自动从引用文档的标题中读取。

  1. 只需使用不带扩展名的文件名作为条目。

    .. toctree::
    file_name_without_the_rst_extension
    

条目

(…(您可以使用类似于reST超链接的语法指定明确的标题和目标

  1. 与上面相同,但为条目指定成本标题。

    .. toctree::
    Whatever title you want to write <file_name_without_the_rst_extension>
    

其他选项

通过提供glob标志选项,您可以在toctree指令中使用"globbing"。然后将所有条目与可用文档列表进行匹配,并按字母顺序将匹配项插入到列表中。

(…(

这首先包括所有名称以介绍开头的文档,然后是配方文件夹中的所有文档,最后是所有剩余文档(当然,包含指令的文档除外(

  1. 一个glob模式。可以是目录的内容,也可以是部分文件名的所有匹配项。

    .. toctree::
    :glob:
    intro*
    recipe/*
    *
    

其他选项

特殊条目名称self代表包含toctree指令的文档。如果你想从toctree生成一个"站点地图",这很有用。或

  1. 条目也可以是特殊名称self,在这种情况下,包含toctree的.rst被添加为条目。

    .. toctree::
    self
    
  2. 有一个未记录的功能是使用上面在点(2.(中解释的语法添加http://链接作为条目;Sphinx-toctree指令中的外部相对链接";



话虽如此,这个问题在几个方面都是不正确的。

  1. 不能将.. automodule::添加为.. toctree::条目。(如上所述(。

  2. 您不应该将.. toctree::放在文档字符串中。这在概念上是错误的,文档字符串用于记录它们被设置为__doc__属性的对象的API(签名加简短注释(。



以上已经是一个冗长的解释,但我认为真正解决问题的是:

  1. 记录__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.rstindex.rst应该如下所示:

-----
index
-----
.. toctree::
:maxdepth: 1
:caption: Contents:
your_package

相关内容

  • 没有找到相关文章

最新更新