自动模块中的python sphinx变量和类属性

时间:2011-03-15 23:59:26

标签: python django documentation module python-sphinx

我想知道为什么在sphinx中使用automodule指令时我无法看到类属性...

即使属性有docstring

与django设置CONSTANTS相同,它们不会显示。

我用:

.. automodule:: settings
   :members:
   :show-inheritance:
   :undoc-members:

我将设置拆分为模块

设置

  • __初始化__。PY
  • installed_apps.py
  • locale.py
  • db.py
  • cache.py
  • stage_stable.py
  • stage_test.py
  • stage_dev.py
  • ...
  • templates.py

并在__init__.py中我从其他文件导入所有内容并选择我在哪个阶段

它适用于django,简化了设置修改,并且......不适用于sphinx:{

1 个答案:

答案 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目录。 (我也将它解决为绝对路径,以便减少意外的可能性。)显然,你必须根据具体情况改变它。

我希望这可以帮助你。