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

时间:2016-06-26 01:17:28

标签: 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__.py的{​​{1}}中导入了该课程,我希望sphinx生成的apidocs只使用这个类skmultilearn.base而不是skmultilearn.base.MLClassifierBase,就像现在一样。有人可以帮忙吗?

我已经尝试过了:

  • skmultilearn.base.base.MLClassifierBaseSphinx apidoc - don't print full path to packages and modules

  • 中设置add_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 。我该如何改变?

1 个答案:

答案 0 :(得分:2)

我找到了一个解决方案:

"""
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"]

它为base.ProblemTransformationBase而不是base.base.ProblemTransformationBase生成文档。您需要在__init__.py中共同使用这三个元素:

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