标点符(钱魏 Way)

使用Sphinx制作说明文档

Sphinx允许开发人员以纯文本格式编写文档,以便采用满足不同需求的格式轻松生成输出。虽然 Sphinx 是用 Python 编写的,并且最初是为 Python 语言文档而创建,但它并不一定是以语言为中心,在某些情况下,甚至不是以程序员为中心。Sphinx 有许多用处,比如可以用它来编写整本书!

可以将 Sphinx 想像成为一种文档框架:它会抽象化比较单调的部分,并提供自动函数来解决一些常见问题,比如突出显示标题索引和特殊代码(在显示代码示例时),以及突出显示适当的语法。

简单来说,Sphinx 是一个基于ReStructuredText的文档生成工具。方便易用,功能强大。很多著名 python 项目都使用了 sphinx 生成自己的文档,比如:python 官方文档tornado 框架文档等。

一、在Windows上安装Sphinx

如果你的Windows电脑已经安装好了Python或Pip的话,步骤非常的简单,只需要在CMD窗口中执行 pip install Sphinx,然后等待执行完毕就OK。

二、建立Sphinx项目

建议使用sphinx自带的配置工具sphinx-quickstart。 – 建立一个工程目录,比如F\:Note。 – 在该目录启动命令行,输入sphinx-quickstart

F:\Note>sphinx-quickstart
Welcome to the Sphinx 1.1.3 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

1、设定文档的根路径(直接回车,采用默认设置)

Enter the root path for documentation.
> Root path for the documentation [.]:

2、分离source和build目录(采用分离,可便于管理)

You have two options for placing the build directory for Sphinx output.
Either, you use a directory “_build” within the root path, or you separate
“source” and “build” directories within the root path.
> Separate source and build directories (y/N) [n]: y

3、设定模板前缀(直接回车即可)

Inside the root directory, two more directories will be created; “_templates”
for custom HTML templates and “_static” for custom stylesheets and other static
files. You can enter another prefix (such as “.”) to replace the underscore.
> Name prefix for templates and static dir [_]:

4、制定项目名称、作者及版本号

The project name will occur in several places in the built documentation.
> Project name: myNote
> Author name(s): QW

Sphinx has the notion of a “version” and a “release” for the
software. Each version can have multiple releases. For example, for
Python the version is something like 2.5 or 3.0, while the release is
something like 2.5.1 or 3.0a1.  If you don’t need this dual structure,
just set both to the same value.
> Project version: 1.0.1
> Project release [1.0.1]:

5、设定文档文件的后缀,默认是.rst,推荐设置.txt

The file name suffix for source files. Commonly, this is either “.txt”
or “.rst”.  Only files with this suffix are considered documents.
> Source file suffix [.rst]: .txt

6、设定首页的名字,默认index就好了,不用改。

One document is special in that it is considered the top node of the
“contents tree”, that is, it is the root of the hierarchical structure
of the documents. Normally, this is “index”, but if your “index”
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]:

7、是否要设定epub输出,基本不用No即可

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/N) [n]: N

8、设定是否需要使用Sphinx拓展功能

Please indicate if you want to use one of the following Sphinx extensions:
> autodoc: automatically insert docstrings from modules (y/N) [n]: y
> doctest: automatically test code snippets in doctest blocks (y/N) [n]: y
> intersphinx: link between Sphinx documentation of different projects (y/N) [n]: y
> todo: write “todo” entries that can be shown or hidden on build (y/N) [n]: y
> coverage: checks for documentation coverage (y/N) [n]: y
> pngmath: include math, rendered as PNG images (y/N) [n]: y
> mathjax: include math, rendered in the browser by MathJax (y/N) [n]: y
Note: pngmath and mathjax cannot be enabled at the same time.
pngmath has been deselected.
> ifconfig: conditional inclusion of content based on config values (y/N) [n]: y
> viewcode: include links to the source code of documented Python objects (y/N) [n]: y

9、创建项目

A Makefile and a Windows command file can be generated for you so that you only have to run e.g. `make html’ instead of invoking sphinx-build directly. > Create Makefile? (Y/n) [y]: y > Create Windows command file? (Y/n) [y]: y

Creating file .\source\conf.py.
Creating file .\source\index.txt.
Creating file .\Makefile.
Creating file .\make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file .\source\index.txt and create other documentation
source files. Use the Makefile to build the docs, like so:
make builder
where “builder” is one of the supported builders, e.g. html, latex or linkcheck.

10、生成HTML文件

F:\Note>make html
Making output directory…
Running Sphinx v1.1.3
loading pickled environment… not yet created
loading intersphinx inventory from http://docs.python.org/objects.inv…
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources… [100%] index

looking for now-outdated files… none found
pickling environment… done
checking consistency… done
preparing documents… done
writing output… [100%] index

writing additional files… (0 module code pages) genindex search
copying static files… done
dumping search index… done
dumping object inventory… done
build succeeded.

Build finished. The HTML pages are in build/html.

如果要生成文档,在source目录下新建txt文件即可,然后运行make html,另外如果txt中存在中文,则需要将txt保存为utf-8格式。

码字很辛苦,转载请注明来自标点符《使用Sphinx制作说明文档》

评论

  1. faith #1

    有windows版本的,也可以用.

    只是rst文件和markdown文件有转换工具么?

    winddows下不如linux下好用.

    回复
    2014-08-19
  2. allankliu #2

    我遇到一些困难。好像访问https://docs.python.org/objects.inv有问题。导致无法更新现有的文档。

    C:\DawnMedical\epic_webapi>make html
    Running Sphinx v1.3.5
    loading translations [zh_CN]… done
    loading pickled environment… done
    loading intersphinx inventory from https://docs.python.org/objects.inv
    WARNING: intersphinx inventory ‘https://docs.python.org/objects.inv’ not fetchable due to :
    building [mo]: targets for 0 po files that are out of date
    building [html]: targets for 1 source files that are out of date
    updating environment: 0 added, 1 changed, 0 removed
    reading sources… [100%] index
    looking for now-outdated files… none found
    pickling environment… done
    checking consistency… done
    preparing documents… done
    writing output… [100%] index
    generating indices… genindex
    writing additional pages… search
    copying static files… done
    copying extra files… done
    dumping search index in English (code: en) … done
    dumping object inventory… done
    build succeeded, 1 warning.

    Build finished. The HTML pages are in build/html.

    何解?VPN?

    回复
    2016-02-17