27

我有一个这样的项目结构:

package/
    __init__.py
    module.py

__init__.py包含:

from .module import Class

module.py包含:

class Class:
    pass

使用sphinx-apidoc -o package/docs/ package/and sphinx-build package/docs/ package/docs/_build,文档Class看起来像这样:

包.module。班级

     基础:对象

我想要这个输出:

包。班级

     基础:对象

或者,更好的是,没有包名:

     基础:对象

用户不必知道类是在哪个文件中定义的;这些信息完全无关紧要,如果不是令人困惑的话。由于直接__init__.py导入Class包的命名空间,用户会将此类导入为from package import Class,而不是from package.module import Class,我希望文档反映这一点。

有没有办法让 sphinx 输出相对于包的命名空间的路径?

4

2 回答 2

5

尝试添加add_module_names = Falseconf.py

于 2021-03-03T15:00:42.577 回答
4

虽然添加add_module_names = False(参考答案)使 Sphinx 呈现package.module.ClassClass,但如果您想呈现package.module.Classpackage.Class(即,将类记录为package命名空间的一部分),它并没有帮助。

如果您希望 Sphinx 记录package.module.class为,请在包package.Class中包含以下几行(请参阅答案):__init__.py

# This lets you use package.module.Class as package.Class in your code.
from .module import Class

# This lets Sphinx know you want to document package.module.Class as package.Class.
__all__ = ['Class']
于 2021-03-22T09:55:39.247 回答