我正在记录的包由一组 *.py
文件组成,大部分包含一个类和几个文件,这些文件是定义了函数的真正模块。我不需要暴露每个类都在一个模块中的事实,所以我在 __init__.py
文件中添加了合适的 from
语句,例如
from base import Base
这样用户就可以使用 import pkg
命令,而不必指定包含该类的模块:
import pkg
class MyBase(pkg.Base): # instead of pkg.base.Base ...
...
问题是 Sphinx 坚持将类记录为 pkg.base.Base
。我试图在 conf.py
中设置 add_module_names = False
。然而,这会导致 Sphinx 将该类显示为简单的 Base
而不是 pkg.Base
。此外,这还会破坏属于模块的*.py
文件的文档。
如何让 Sphinx 将类显示为 pkg.Base
?
以及如何为每个 *.py
文件选择性地设置 add_module_names
指令?
最佳答案
这是一种完成 OP 要求的方法:
添加
__all__
在pkg/__init__.py
中列出:from base import Base # Or use 'from base import *' __all__ = ["Base"]
在 .rst 文件中使用
.. automodule::pkg
。
Sphinx 现在将输出文档,其中类名显示为 pkg.Base
而不是 pkg.base.Base
。
关于python - 我如何记录从其他模块导入的类——因此没有声明模块的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115514/