5

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

我已经尝试过:

  • add_module_names = False根据Sphinx conf.pyapidoc设置- 不打印包和模块的完整路径

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

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

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

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

4

1 回答 1

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

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

  • :mod:任何地方提到的定义
  • 类的导入
  • ` all `中的类名
于 2017-02-14T14:32:26.187 回答