代码之家  ›  专栏  ›  技术社区  ›  buhtz

函数在Sphinx autodoc生成的文档中出现两次

  •  0
  • buhtz  · 技术社区  · 4 年前

    背景信息

    我通过Sphinx autodoc从文档字符串生成文档。有一个函数 mypackage.mypackage.foo() 位于源文件中 mypackage/mypackage.py 。它在 __init__.py ,因此用户可以将其用作 mypackage.foo()

    我确实操作了Sphinx autodoc,它为其生成了docu foo() 尊重他们的进口方式。这是有效的。

    问题

    关于的文档 foo() 生成两次;一次作为 mypackage.foo() 一次作为 mypackage.mypackage.foo()

    enter image description here

    详细信息

    这是项目的结构:

    mypackage
    ├── a.py
    ├── __init__.py
    └── mypackage.py
    

    这个 __init__.py 是否 import 然后操纵 __all__ 变量:

    from .mypackage import *
    __all__ = ['foo']  # for alternative see: https://stackoverflow.com/a/66996523/4865723
    

    mypackage/mypackage.py 定义 foo()

    正因为如此,我可以做这样的事情:

    import mypackage
    mypackage.foo()
    

    相关问题和答案

    以下是将我带到当前“部分解决方案”的问题和答案。哪里 mypackage.foo() 如文档中预期的那样出现,但是 mypackage.mypackage.foo() 不会消失。

    0 回复  |  直到 4 年前
        1
  •  0
  •   buhtz    4 年前

    @mzjn给了我正确的方向。他说有两个是对的 automodule 指令。所以我们的目标是 sphinx-apidoc (生成指令)忽略 mypackage/mypackage.py

    为了使它成为一个“私有模块”,修改它的文件名以下划线开头( _ )。

    由此产生的项目结构:

    mypackage
    ├── a.py
    ├── __init__.py
    └── _mypackage.py
    

    和进口 __init__.py 需要修改为 from ._mypackage import *