我想使用Sphinx记录Python包。让我们假设包由两个模块组成,并具有以下结构:
my_package
__init__.py
mod_a.py
class_a_1
class_a_2
mod_a.py
class_b_1
class_b_2
要在程序包级别为用户提供所有类,__init__.py
包含以下行:
from .mod_a import class_a_1, class_a_2
from .mod_b import class_b_1, class_b_2
目前,我使用带有以下行的第一个文件生成我的类的API文档:
.. automodule:: my_package.mod_a
:members:
:undoc-members:
.. automodule:: my_package.mod_b
:members:
:undoc-members:
在结果文档中列出了类,例如为:
class mypackage.mod_a.class_a_1
如何让Sphinx以下列两种方式列出类:
class class_a_1
或:
class my_package.class_a_1
除了API参考之外,我还想添加一个教程,其中包含对类及其一些方法的引用。目前,以下 第一个参考工作:
.. currentmodule:: my_package.mod_a
:class:`class_a_1`
或:
:class:`my_package.mod_a.class_a_1`
有没有一种方法可以在不定义完整模块结构且不使用.. currentmodule::
指令的情况下引用类和方法?在文档中,我经常需要在不同模块的类之间切换,并希望避免大量的.. currentmodule::
指令。理想情况下,我想使用以下引用方式:
此句使用对:class:`class_a_1`
和:class:`class_b_1`
的引用。或者,如果我能写:class:`my_package.class_a_2`
和:class:`my_package.class_b_2`
,那就太好了。
我希望包对主用命名空间中所有类的用户看起来都是平的。有什么我可以添加到我的Sphinx文档文件或__init__.py
,以便能够使用单个命令生成API文档,如
.. automodule:: my_package
:members:
:undoc-members:
目前,此命令会生成一个空页面。
非常感谢!