如何使 apidocs 在 sphinx-apidoc 中使用包而不是模块

nie*_*akh 5 python python-sphinx autodoc api-doc

我使用 docstrings 来记录 python 代码,并使用 sphinx-autodoc 来生成 apidoc HTML。我的包的结构如下:mainpackage.subpackage.module,我希望 apidocs 从模块中链接到类,而mainpackage.subpackage.Class不是mainpackage.subpackage.module.Class。我的问题来自scikit-multilearn项目,例如:我MLClassifierBase在 中有一个类skmultilearn.base.base,但我将其导入到 中__init__.pyskmultilearn.base并且我希望 sphinx 生成的 apidocs 仅使用此类,skmultilearn.base.MLClassifierBase而不是skmultilearn.base.base.MLClassifierBase像现在那样使用该类。有人可以帮忙吗?

我已经尝试过:

  • 在每个Sphinx apidocadd_module_names = False中设置- 不打印包和模块的完整路径conf.py

  • 添加""".. automodule:: base"""skmultilearn/base/__init__.py

  • 添加__all__ = ['MLClassifierBase']skmultilearn/base/__init__.py

  • 添加.. autoclass:: base.MLClassifierBase到类文档中

我仍然有一个Bases: skmultilearn.base.base.MLClassifierBase在每个派生自 的类中MLClassifierBase。我该如何改变这个?

nie*_*akh 3

我找到了一个解决方案:

"""
The :mod:`skmultilearn.base` module implements base
classifier classes for scikit-multilearn's multi-label classification.
"""

from .base import MLClassifierBase
from .problem_transformation import ProblemTransformationBase

__all__ = ["MLClassifierBase", 
           "ProblemTransformationBase"]
Run Code Online (Sandbox Code Playgroud)

base.ProblemTransformationBase它为和 不生成文档base.base.ProblemTransformationBase。您需要将这三个元素放在一起__init__.py

  • :mod:任何地方提到的定义
  • 类的导入
  • ` all ``中的类名称