Sphinx是一款在Python社区中广泛采用的文档生成器,用于创建全面且结构清晰的项目文档。它由Python编写,是Python项目文档的事实标准。

sphinx-quickstart初始化项目

使用sphinx-quickstart 快速初始化,在项目中会生成docs 文件夹。可以看到一些基础的配置。安装myst可以解析mardown文档而不仅仅是rst文档。

快速创建API文档

我一开始上手的时候感觉整个框架非常的不清晰,感觉是从一个静态网站生成器迁移来的。从代码中自动获取docstring来生成带有结构文档有两种方法。都需要使用到自带的autodoc插件。

extensions = [
    "sphinx.ext.autodoc",
    "sphinx.ext.autosummary",
    "sphinx.ext.napoleon",  # for Google/NumPy style docstrings
    "sphinx.ext.viewcode",
    "myst_parser",
]
autosummary_generate = True

1. sphinx-apidoc

sphinx-apidoc 是一个用于自动生成Sphinx源文件的工具,它使用autodoc扩展,能够对整个包进行文档化。

它最大的定位是帮助你根据包的结构生成相应的rst文件。比如说,你的包里很多子包,它能够把每个子包都递归的创建stub(rst文件),并使用automodule 来创建详细文档。

sphinx-apidoc -o docs/source/api your_package

执行完后,会在docs/source/api 生成大量的rst文件。然后需要进一步的build,来生成文档。

2. autosummary

autosummary 是一个用在文档中的指令,它可以帮助你在当前页面生成一张表,并对表里的每一个子项生成一个页面。结合:recursive: 选项的话,也能够生成一个包里的结构。

.. autosummary::
   :toctree: generated
   :recursive:
   :nosignatures:

   your_package

它会在docs/source/generated 文件夹下面生成相关的stub 。但是要注意的是官方定义autosummary:recursive: 主要是针对包,它在叶节点不会对类和函数生成相应的stub (这也太坑了点…)