Sphinx autosummary链接到导入的成员文档

问题描述 投票:0回答:1

我正在尝试记录一个有点复杂的python包,它有几个私有子模块

package
 +-- __init__.py "Package Initialization"
 +-- _info.py "Package Info"
 +-- _core.py "Packages Core members"
 +-- _extra1.py "Package Extra members group 1"

然后在__init__.py我有:

from package._info import __authors__, __copyright__, __license__, \
                          __contact__, __version__, __title__, __desc__

from package._core import funcA, funcB, classA, classB

try:
    from package._extra1 import funcE1A, funcE1B, funcE1C
except ImportError:
    _extra1_requirement = "Requires external_package>=x.y"

    def funcE1A(*args, **kwargs):
        raise NotImplementedError(_extra1_requirement)

    def funcE1B(*args, **kwargs):
        raise NotImplementedError(_extra1_requirement)

    def funcE1C(*args, **kwargs):
        raise NotImplementedError(_extra1_requirement)

这样所有公共成员都可以在package命名空间中使用,但是当我在sphinx中使用autosummary来记录我的包时,

.. automodule:: package

Core Functions
--------------
.. autosummary::
    :toctree: reference/

    funcA
    funcB

Core Classes
------------
.. autosummary::
    :toctree: reference/

    classA
    classB

Extra 1 Functions
-----------------
.. autosummary::
    :toctree: reference/

    funcE1A
    funcE1B
    funcE1C

它为reference/package.member生成autodoc文件以及摘要表,但如果我将文档更改为每个成员,则无法创建从摘要表到主文档页面的链接

.. automodule:: package

Core Functions
--------------
.. currentmodule:: package._core
.. autosummary::
    :toctree: reference/

    funcA
    funcB

Core Classes
------------
.. currentmodule:: package._core
.. autosummary::
    :toctree: reference/

    classA
    classB

Extra 1 Functions
-----------------
.. currentmodule:: package._extra1
.. autosummary::
    :toctree: reference/

    funcE1A
    funcE1B
    funcE1C

它生成文档页面的链接,但这些页面现在命名为reference/package.private_submodule.member而不是reference/package.member

我想将主要文档页面保持为reference/package.member并让autosummary生成这些页面的链接。然而,尽管多次搜索并通过文档https://www.sphinx-doc.org/en/master/usage/extensions/autosummary.html,我仍然无法找到任何帮助

python python-sphinx
1个回答
0
投票

我发现了这个问题

当我取出私有子模块时,我已经完成了重命名自动生成的文件,autosummary已经使用以下行生成了这些文件:

.. currentmodule:: package.submodule

此行是错误的来源,因为重构需要将其更改为:

.. currentmodule:: package

在发现这个之后,我重命名了几个文件并重新运行了构建,autosummary生成的新文件被正确链接。

© www.soinside.com 2019 - 2024. All rights reserved.