首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向导入的成员文档的Sphinx自动摘要链接

指向导入的成员文档的Sphinx自动摘要链接
EN

Stack Overflow用户
提问于 2019-03-27 16:08:05
回答 1查看 575关注 0票数 0

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

代码语言:javascript
复制
package
 +-- __init__.py "Package Initialization"
 +-- _info.py "Package Info"
 +-- _core.py "Packages Core members"
 +-- _extra1.py "Package Extra members group 1"

然后在__init__.py中,我有:

代码语言:javascript
复制
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来记录我的包时,即

代码语言:javascript
复制
.. 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文件以及摘要表,但是如果我将文档更改为

代码语言:javascript
复制
.. 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,并有自动摘要生成这些页面的链接。然而,尽管我进行了多次搜索,并翻阅了文档https://www.sphinx-doc.org/en/master/usage/extensions/autosummary.html,但我还是找不到任何可以帮助我的东西

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 19:52:19

我发现了问题

当我删除私有子模块时,我已经重命名了自动生成的文件,autosummary使用下面的代码行生成了这个文件:

代码语言:javascript
复制
.. currentmodule:: package.submodule

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

代码语言:javascript
复制
.. currentmodule:: package

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55372418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档