Sphinx自动模块文档也记录导入的模块

4 投票
1 回答
1630 浏览
提问于 2025-04-18 16:25

我正在使用sphinx为我创建的一个包生成文档。文档生成得很正常,但它也为导入的内容生成了文档。有没有办法设置automodule,只为指定模块中的函数生成文档,而不包括那些被导入的模块呢?

编辑

这种情况只发生在我使用以下导入方式时:from pylab import *

在我的rst文件中,我写了:

.. automodule:: name.subname
   :members:

mzjn指出这个问题已经被问过了:使用"from x import *"文档化文件

解决办法是改变pylab的导入方式:

import pylab
from pylab import *
for k,v in pylab.__dict__.iteritems():
    if hasattr(v,'__module__'):
        if v.__module__ is None:
            locals()[k].__module__ = 'pylab'

1 个回答

3

对于模块来说,当我们查找模块里的成员时,__all__ 会被遵循;而且成员的顺序也会和 __all__ 中的顺序一致。

__all__ 是一个很好的方式,让模块声明它希望公开的内容。你也可以在 Sphinx 配置中,在 :members: 后面列出一个用逗号分隔的成员列表,但 __all__ 对于导入和其他工具也很有用。

撰写回答