Python 生成rst文件和目录,镜像包和模块树

Python 生成rst文件和目录,镜像包和模块树,python,python-sphinx,sphinx-apidoc,Python,Python Sphinx,Sphinx Apidoc,我正在尝试为我的库生成文档。由于库目录结构相当大,我希望Sphinx将.rst文件生成为嵌套目录,以反映包和模块结构 图书馆结构: 到目前为止,我一直在使用sphinxapidoc-e-o…在docs/source/文件夹中生成文档。 但这并不像预期的那样有效 预期成果: 作为嵌套目录生成的文档。已删除这些文件以仅保留主干 docs/source/ └── ciphers/    └── backends/       ├── cryptodome_/       └── crypto

我正在尝试为我的库生成文档。由于库目录结构相当大,我希望Sphinx将
.rst
文件生成为嵌套目录,以反映包和模块结构

图书馆结构: 到目前为止,我一直在使用
sphinxapidoc-e-o…
docs/source/
文件夹中生成文档。 但这并不像预期的那样有效

预期成果: 作为嵌套目录生成的文档。已删除这些文件以仅保留主干

docs/source/
└── ciphers/
    └── backends/
        ├── cryptodome_/
        └── cryptography_/
实际结果: 将保留整个模块名

docs/source/
├── ...  # skipping boilerplate files
├── pyflocker.ciphers.backends.cryptodome_.AES.rst
├── pyflocker.ciphers.backends.cryptodome_.ChaCha20.rst
├── pyflocker.ciphers.backends.cryptodome_.ECC.rst
├── pyflocker.ciphers.backends.cryptodome_.Hash.rst
├── pyflocker.ciphers.backends.cryptodome_.RSA.rst
├── pyflocker.ciphers.backends.cryptodome_.rst
├── pyflocker.ciphers.backends.cryptography_.AES.rst
├── pyflocker.ciphers.backends.cryptography_.Camellia.rst
├── pyflocker.ciphers.backends.cryptography_.ChaCha20.rst
├── pyflocker.ciphers.backends.cryptography_.DH.rst
├── pyflocker.ciphers.backends.cryptography_.ECC.rst
├── pyflocker.ciphers.backends.cryptography_.Hash.rst
├── pyflocker.ciphers.backends.cryptography_.RSA.rst
├── pyflocker.ciphers.backends.cryptography_.rst
├── pyflocker.ciphers.backends.rst
├── pyflocker.ciphers.base.rst
├── pyflocker.ciphers.exc.rst
├── pyflocker.ciphers.interfaces.AES.rst
├── pyflocker.ciphers.interfaces.Camellia.rst
├── pyflocker.ciphers.interfaces.ChaCha20.rst
├── pyflocker.ciphers.interfaces.DH.rst
├── pyflocker.ciphers.interfaces.ECC.rst
├── pyflocker.ciphers.interfaces.Hash.rst
├── pyflocker.ciphers.interfaces.RSA.rst
├── pyflocker.ciphers.interfaces.rst
├── pyflocker.ciphers.modes.rst
├── pyflocker.ciphers.rst
├── pyflocker.locker.rst
└── pyflocker.rst

有没有办法将文档生成为目录树?

您指定的内容目前不可能实现

  • sphinx-apidoc
    不会创建与包/文件结构镜像的目录
  • sphinx-apidoc
    不会将
    .rst
    文件分发到与包/文件结构相镜像的多个目录中
  • 请注意
    sphinx apidoc
    签名,您可以为模块指定一个输入路径,为
    .rst
    文件指定一个输出路径:

    sphinx-apidoc[选项]-o[排除模式…]

    您必须编写自己的脚本以递归到文件系统中,并使用
    镜像
    对每个包/目录执行一次
    sphinx apidoc

    这看起来可能是不直观的,但是Python的哲学是:

    平的比嵌套的好

    可以说,让
    sphinx-apidoc
    生成带有虚线名称的
    .rst
    文件更方便,因为您一眼就能看到包/模块结构的概览,而且它倾向于保存单击


    如果您想在以后将一些
    .rst
    文件组织到目录中,可以将它们链接起来,但是在编写本文时,不可能在一次执行中使用
    sphinx apidoc
    自动生成这样的树。

    可以使用。 它镜像原始包结构并生成适当的文件


    请注意,它不会编辑其中的文件或链接。它只是重命名或移动它们。

    我在sphinx apidoc或sphinx autogen的文档中没有看到任何这样的选项。我也没有看到任何扩展在这可以用一个单一的功能使用。如果使用
    sphinx-apidoc-e
    为每个模块获取一个文件,请将所有文件名(其名称完全限定在帮助中)放入字典并保存。之后,为每个父级创建一个目录,并将文件放在所需的位置。现在可以使用。我将在答复中提到这一点。
    docs/source/
    ├── ...  # skipping boilerplate files
    ├── pyflocker.ciphers.backends.cryptodome_.AES.rst
    ├── pyflocker.ciphers.backends.cryptodome_.ChaCha20.rst
    ├── pyflocker.ciphers.backends.cryptodome_.ECC.rst
    ├── pyflocker.ciphers.backends.cryptodome_.Hash.rst
    ├── pyflocker.ciphers.backends.cryptodome_.RSA.rst
    ├── pyflocker.ciphers.backends.cryptodome_.rst
    ├── pyflocker.ciphers.backends.cryptography_.AES.rst
    ├── pyflocker.ciphers.backends.cryptography_.Camellia.rst
    ├── pyflocker.ciphers.backends.cryptography_.ChaCha20.rst
    ├── pyflocker.ciphers.backends.cryptography_.DH.rst
    ├── pyflocker.ciphers.backends.cryptography_.ECC.rst
    ├── pyflocker.ciphers.backends.cryptography_.Hash.rst
    ├── pyflocker.ciphers.backends.cryptography_.RSA.rst
    ├── pyflocker.ciphers.backends.cryptography_.rst
    ├── pyflocker.ciphers.backends.rst
    ├── pyflocker.ciphers.base.rst
    ├── pyflocker.ciphers.exc.rst
    ├── pyflocker.ciphers.interfaces.AES.rst
    ├── pyflocker.ciphers.interfaces.Camellia.rst
    ├── pyflocker.ciphers.interfaces.ChaCha20.rst
    ├── pyflocker.ciphers.interfaces.DH.rst
    ├── pyflocker.ciphers.interfaces.ECC.rst
    ├── pyflocker.ciphers.interfaces.Hash.rst
    ├── pyflocker.ciphers.interfaces.RSA.rst
    ├── pyflocker.ciphers.interfaces.rst
    ├── pyflocker.ciphers.modes.rst
    ├── pyflocker.ciphers.rst
    ├── pyflocker.locker.rst
    └── pyflocker.rst