Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等。

安装

创建一个sphinx项目

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

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

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

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

source/ 目录

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

index.rst

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

打开index.rst,可以看到这样的内容,这是rst的一个语法,它使用了一个toctree节点,并设置了一些参数,而这个toctree节点是必须的。

conf.py

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

一个具体的例子

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

那么需要如何生成文档呢?下面一步步带你完成 
- 创建一个文件夹demo/,并将run.py放到里面 
- 在demo里创建一个docs目录,进入docs/目录,当然这里你可以随意选定文件夹,只是这样更规范一些 
- 生成Sphinx默认模板,设置项目名为demo,并开启autodoc 
运行sphinx-quickstart 
- 进入source目录,打开index.rst 
- 将index.rst 修改为如下,实际上这里面可以写任何满足rst规范的内容

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

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

  • 格式进一步优化

    上面的例子涵盖了大多数常用操作,但是通常文档都不是扁平的,而是层次化的,那么要如何将文档层次化的分门别类。 
    实际上在rst文档中是可以以链接的形式引用其他rst文档的,也就是说我们可以自由的对文档结构进行组织使其更易读

    下面我们把run的文档移动到一个单独的页面,只在index.rst里保留跳转链接。在source目录下创建run.rst

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

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

使用Sphinx为你的python模块自动生成文档的更多相关文章

  1. 【Sphinx】 为Python自动生成文档

    sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...

  2. 使用doctest代码测试和Sphinx自动生成文档

    python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...

  3. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能

    产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...

  4. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  5. MVC WEB api 自动生成文档

    最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...

  6. 使用swagger在netcorewebapi项目中自动生成文档

    一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...

  7. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  8. python代码docstring生成文档之sphinx

    在使用python中,我们一般在模块,类,函数下使用docstring添加字符串说明性文档,使开发人员更好的可以看懂此代码是做什么用的.然而写了那么多的注释,我们想要一篇文档怎么办,第一种办法不可能将 ...

  9. 用doxygen自动生成文档

    1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...

随机推荐

  1. Node.js + Express 接口请求(GET、POST、PUT)事例

    路由 路由是指应用程序的端点(URI)如何响应客户端请求.有关路由的介绍,请参阅基本路由. 您可以使用Express app对象的方法定义路由,这些方法对应于HTTP方法; 例如,app.get()处 ...

  2. 使用AJAX报406错误

    使用AJAX报406错误,基本有一下两种情况: (1)90%的可能是没有添加jackson包: (2)10%的可能是请求的url后缀是*.html 在springmvc里面,如果请求的是*.html, ...

  3. 【转】别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    前言 一直以来写的博文都是比较温婉型的博文,今天这篇博文算是一篇批判性博文,有问题欢迎探讨,如标题,你到底会不会用EntityFramework啊. 你到底会不会用EntityFramework啊 面 ...

  4. Vue 导入excel功能

    html: <input type="file" @change="importf(this)" accept=".csv, applicati ...

  5. Linux修改用户密码有效期

    linux默认用户的密码是永不过期的,但是出于安全考虑在企业环境中一般会要求设置过期日期:但有时要求90天就过期,在这种严柯条件下我们有可能想给某个或某些用户开设后门,延长其密码有效期. 一.用户密码 ...

  6. Utf-8+Bom编码导致的读取数据部分异常问题

    项目中经常会有这种场景,在配置文件中配置对应关系,项目启动的时候从中读取数据存入map缓存起来,这样使用的时候就可以直接从map找到对应的映射关系. 然后遇到了这么一个诡异的问题,一个简单的映射关系如 ...

  7. laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据

    public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...

  8. learning ddr DLL-off mode

  9. hibernate创建构架

    创建hibernate架构: 注意:需要将所需的架包导进去: 二:Java工程的具体结构: 具体代码如下:hibernate.cfg.xml <!DOCTYPE hibernate-config ...

  10. ural1519

    题解: 插头dp 具体可以看看cdq论文 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ...