如何在Sphinx-apidoc中使用包而非模块来生成API文档

5
我正在使用docstrings来记录python代码,并使用sphinx-autodoc生成apidoc HTML。我的包结构如下:mainpackage.subpackage.module,我希望apidocs将模块中的类链接为mainpackage.subpackage.Class而不是mainpackage.subpackage.module.Class。我的问题来自于scikit-multilearn项目,例如:我在skmultilearn.base.base中有一个MLClassifierBase类,但我在skmultilearn.base.__init__.py中导入它,并且我希望由sphinx生成的apidocs仅将此类用作skmultilearn.base.MLClassifierBase,而不是像现在这样使用skmultilearn.base.base.MLClassifierBase。有人能帮忙吗?
我已经尝试过:
- 在conf.py中设置add_module_names = False,参见Sphinx apidoc - don't print full path to packages and modules - 在skmultilearn/base/__init__.py中添加""".. automodule:: base""" - 在skmultilearn/base/__init__.py中添加__all__ = ['MLClassifierBase'] - 在类文档中添加.. autoclass:: base.MLClassifierBase 但是每个从MLClassifierBase派生的类仍然有一个Bases: skmultilearn.base.base.MLClassifierBase。我该如何更改呢?

1
类似于https://dev59.com/qGUp5IYBdhLWcg3wtZA0和https://dev59.com/110Z5IYBdhLWcg3w-ETS。 - mzjn
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:定义
  • 类的导入
  • 所有类的名称

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接