我想知道为什么在sphinx中使用automodule指令时我无法看到类属性...
即使属性有docstring
与django设置CONSTANTS相同,它们不会显示。
我用:
.. automodule:: settings
:members:
:show-inheritance:
:undoc-members:
我将设置拆分为模块
设置
并在__init__.py中我从其他文件导入所有内容并选择我在哪个阶段
它适用于django,简化了设置修改,并且......不适用于sphinx:{
答案 0 :(得分:4)
docstrings通常不适用于类属性,但是如果你把它放在字段之后,Sphinx的autodoc扩展就可以了。您还可以在字段前使用此特殊语法:
#: Documentation for my_field. You can
#: use one or more lines as well.
my_field = "something"
要检查的其他事项是您在conf.py
文件中列出了autodoc扩展名。寻找extensions = ["sphinx.ext.autodoc"]
。 (该列表可能包含多个扩展名。)
[编辑:]我以前在错误的地方有文档评论。与文档字符串不同,#:
注释必须在之前您要评论的字段。
[编辑:]由于以上不是问题,这是另一种可能性。您的文档必须可以访问.. automodule::
之后使用的模块或包。这意味着您需要确保将其位置添加到Python路径中。我的项目设置如下:
my_project/
package/
__init__.py
...
doc/
build/
...
source/
conf.py
...
在这种情况下,我需要将/my_package
添加到Python路径,以便我可以访问package
。为此,我确保这是conf.py
:
import sys, os # I believe conf.py already imports sys,
import os.path # os, and os.path. But just in case, I
# list it here.
sys.path.insert(0, os.path.abspath(os.path.join('..','..')))
这有效地将./../..
添加到Python路径,从我的示例中的conf.py是my_project
目录。 (我也将它解决为绝对路径,以便减少意外的可能性。)显然,你必须根据具体情况改变它。
我希望这可以帮助你。