python - 我如何记录从其他模块导入的类——因此没有声明模块的名称?

标签 python package python-sphinx

我正在记录的包由一组 *.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 要求的方法:

  1. 添加 __all__pkg/__init__.py 中列出:

    from base import Base    # Or use 'from base import *'
    
    __all__ = ["Base"]
    
  2. 在 .rst 文件中使用 .. automodule::pkg

Sphinx 现在将输出文档,其中类名显示为 pkg.Base 而不是 pkg.base.Base

关于python - 我如何记录从其他模块导入的类——因此没有声明模块的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115514/

相关文章:

python - 如何使用 Sphinx 在 reStructuredText 中添加博客样式标签

python - 获取文件夹中的最新文件并上传到 s3?

python - 如何使用sklearn从RFE中获取系数?

Android 通过包名获取安装位置

r - 在 Rstudio 上安装 R 包 pcalg 时出错 : "clang: error: linker command failed with exit code 1"

python - FileNotFoundError : [Errno 2] when using sphinx and autodoc

python - 是否有可能知道哪些 SciPy/NumPy 函数在多核上运行?

python - 如果它们完全相同,包括项目的顺序,则从列表中删除重复的元组

compilation - 如何使用特定标志重建系统的所有 Debian 软件包?

python - sphinx - 如何更改文档样式表