使用sphinx快速生成Python API 文档

一  简单介绍

不管是开源还是闭源,文档都是很重要的。当然理论上说,最好的文档就是代码本身,但是要让所有人都能读懂你的代码这太难了。所以我们要写文档。大部分情况,我们不希望维护一份代码再加上一份文档,这样做很容易造成文档和代码的不一致,程序员最讨厌更新文档了。所以最佳实践就是在程序员代码中加注释,然后通过构建脚本自通生成文档,包括html,latex,pdf等。

对应于Pyhon,有很多可供选择的工具:

  • sphinx中文版介绍 Sphinx使用 reStructuredText作为标记语言(类似Markdown),可扩展,功能强大。要注意的是何有一个开源的搜索也叫Sphinx,斯芬克斯果然太受欢迎,开源的世界起个名字不容易呀。
  • pdoc是一个简单易用的命令行工具,可以生成Python的API文档
  • Doxygen 是老牌的文档生成工具,可以针对各种语言生成文档,我们以前在C++的项目中曾经使用过
  • 其他还有诸如 pydocpydoctor等等

二 安装

  • 要安装Sphinx,不同的操作系统有不同的安装方式,Sphinx的源代码在这里
  • 你也可以自己构建。我推荐使用pip install sphinx !
  • 如果你安装了Anaconda,Sphinx已经包含在内了!

三 创建一个sphinx项目

下面的命令会自动生成一个默认的Sphinx模板:

mkdir yourdir
cd yourdir
sphinx-quickstart

执行期间,它会一步步的询问对模板的设置,除了一些必须填写的选项,大部分填写默认值就行了,你会遇到这样一条叫autodoc的,需要选择yes!

autodoc: automatically insert docstrings from modules (y/n) [n]

然后默认的目录就生成了,大概是这个样子

- yourdir/ # 刚才新建的目录
    - source/ # 存放Sphinx工程源码
    - build/ # 存放生成的文档
    Makefile

现在执行如下指令,就会生成一份空文档,存放在/build/html里,点击index.html就可以打开一个空的网页,虽然没有内容,但是整体的结构还是在的!

sphinx-build -b html source build
make html

source/目录里有两个文件,分别是conf.pyindex.rst,下面对它们进行进一步的介绍

(1) index.rst

.rst是reStructuredText,和Markdown一样是一种标记语言,具体的语法可以看这里 reStructuredText Primer。实际上,我们在使用Sphinx的过程中最主要就是对这些rst文件进行修改,而Sphinx所做的事情就是读取这些rst文件,并转换为特定格式的文档,在前面的步骤中,index.rst实际上被转换为build/html/index.html,而实际上在rst文档内你可以写任何东西,最后这些都会被转换到输出文档中。
打开index.rst,可以看到这样的内容,这是rst的一个语法,它使用了一个toctree节点,并设置了一些参数,而这个toctree节点是必须的。

.. toctree::
   :maxdepth: 2
   :caption: Contents:

(2) conf.py

这是运行sphinx生成文档时会加载的配置,你可以通过对它进行修改来改变生成文档的行为。

四 一个具体的例子

假设现在我们有一个叫run.py的文件,如下

# run.py
def run(name):
    """
    this is how we run

    :param name name of people who runs
    """
    print (name, ‘is running‘)

那么需要如何生成文档呢?下面一步步带你完成

  1. 创建一个文件夹demo/,并将run.py放到里面
  2. 在demo里创建一个docs目录,进入docs/目录,当然这里你可以随意选定文件夹,只是这样更规范一些
  3. 生成Sphinx默认模板,设置项目名为demo,并开启autodoc(运行sphinx-quickstart)
  4. 进入source目录,打开index.rst
  5. 将index.rst 修改为如下,实际上这里面可以写任何满足rst规范的内容
Welcome to demo‘s API Documentation
====================================== .. toctree::       :maxdepth:2       :caption: Contents: 

Introduction
============ This is the introduction of demo。

API
=== .. automodule:: run       :members:

Indices and tables
================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`

这个是用于自动从模块读取docstring的语句,可以自动从run模块读取文档

.. automodule:: run
   :members:

但是现在还差一步,如果你现在直接生成文档,会告诉你找不到run模块,因为Sphinx默认只会从sys.path里加载模块,所以需要将demo目录加入sys.path,所以现在打开conf.py,添加如下内容

import os
import sys
sys.path.insert(0, os.path.abspath(‘../..‘))

运行Sphinx生成html文档

cd ..
sphinx-build -b html source build
make html

现在,打开build/html/index.html就可以看到如下界面了

注:格式进一步优化

上面的例子涵盖了大多数常用操作,但是通常文档都不是扁平的,而是层次化的,那么要如何将文档层次化的分门别类。实际上在rst文档中是可以以链接的形式引用其他rst文档的,也就是说我们可以自由的对文档结构进行组织使其更易读。下面我们把run的文档移动到一个单独的页面,只在index.rst里保留跳转链接。在source目录下创建run.rst

API
===
.. automodule:: run
   :members:

Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

然后将index.rst对应位置的内容删掉,并进行修改

Welcome to demo‘s API Documentation
=================================== .. toctree::       :maxdepth: 2       :caption: Contents: 

Introduction
============ This is the introduction of demo。

API
=== :doc:‘Run API</run>‘

Indices and tables
================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`

:doc:‘Run API</run>‘表示对一个文档的引用,这里引用了当前目录的run.rst,现在重新生成html,就会看到页面显示上的变化了。

参考:使用Sphinx为你的python模块自动生成文档

原文地址:https://www.cnblogs.com/Terrypython/p/10203332.html

时间: 2024-08-26 22:03:01

使用sphinx快速生成Python API 文档的相关文章

MyEclipse生成java API文档

API文档是提供接口是必须的,如果用word文档,不仅书写起来很麻烦,而且对于使用者来说很不方便.可以使用myEclipse来生成API文档,与java提供的官方API文档一样.一下是详细步骤. /**  * 数据库操作通用程序包  */ package xju.dbhelper; import java.sql.*; /**  * 数据库操作通用接口  * @author xju  * @version 1.0  */ public abstract interface DBHelper {

利用Swagger Maven Plugin生成Rest API文档

利用Swagger Maven Plugin生成Rest API文档 Swagger Maven Plugin This plugin enables your Swagger-annotated project to generate Swagger specs and customizable, templated static documents during the maven build phase. Unlike swagger-core, swagger-maven-plugin

javadoc 工具生成开发API文档

=====================先来一点成就感===================== 1 package com.springMybatis.dao; 2 3 import com.springMybatis.model.*; 4 5 6 /** 7 * AuthorizationDao 定义Authorization接口 8 * @author g.qu 9 * @see java.lang 10 */ 11 public interface AuthorizationDao{

ns3使用doxygen生成离线api文档

doxygen的维基介绍: Doxygen是一个编写软件参考文檔的工具.该文檔是直接写在源代码中,因此比较容易保持更新.Doxygen可以交叉引用文檔和源代码,使文件的读者可以很容易地引用实际的源代码. ns3的官方也有doxygen生成的文档,参见:ns3官方doxygen 但是由于网络或者其它原因,我们有本地离线访问的需求,于是doxygen就派上用场了.下面来看看怎么使用doxygen: 1. 官方的方法如下: ns-3 requires Doxygen version 1.5.4 or

Grunt-jsdoc生成JS API文档

具体的请看官网 https://github.com/krampstudio/grunt-jsdoc 一:首先确保本机电脑上是否已经安装了nodejs和npm.具体安装过程可以看如下: http://www.cnblogs.com/tugenhua0707/p/3497488.html 二: 在安装grunt-jsodc之前,我们先要安装grunt,因此我在F盘下 新建文件夹gruntJSDoc 其中根目录里面新建一个package.json文件,内容如下: { "name": &qu

xadmin引入drf-yasg生成Swagger API文档

一.安装drf-yasg: 由于django-rest-swagger已经废弃了 所以引入了drf-yasg pip install drf-yasg 安装install drf-yasg库 https://github.com/axnsan12/drf-yasg Github主页 二.工程的目录结构: demo/settings.py: import os # Build paths inside the project like this: os.path.join(BASE_DIR, ..

Spring Boot中使用Swagger2生成RESTful API文档(转)

效果如下图所示: 添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <versi

Spring Boot 整合 swagger2 自动生成 RESTFul API 文档

1)首先编辑pom.xml添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId>

Android Studio中利用JavaDoc生成项目API文档

1. 在Android Studio中的菜单项中点击Generate JavaDoc 2.如果你的项目中有以"UTF8"做编码的java文件,那么你在这里必须要带上参数: -encoding utf-8 -charset utf-8 或者会报错误: