用sphinx将python的注释生成文档

September 23, 2014

吐槽和缘由

我要的很简单,就是把自已写的python的doctring转成文档,好查看和管理.

不得不吐槽国内的网站,好垃圾,都是抄来抄去,你们有没有真的用过sphinx啊!

官方的文档也要吐一下,鸡鸡歪歪说了一堆,没有一个清晰的主线来说明应该具体怎么操作,实现想要的东西,看得头都大了.

吐槽完毕,还是要解决问题的,对吧.

对了,我还要吐一下pythonhosted:https://pythonhosted.org/an_example_pypi_project/sphinx.html

也是鸡鸡歪歪说了半天,都是在说sphinx的语法,看语法我来你这里看干什么,官方的多好.docstring生成秀了一把 小马 ,然后就没有然后了.

安装

sudo pip install sphinx

初始化

进入你代码所在的目录,输入以下内容

sphinx-quickstart

会出来一系列要选填的东西,按照我的填入就可以了

Welcome to the Sphinx 1.2.3 quickstart utility.

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

Enter the root path for documentation.
> Root path for the documentation ![pic](.): doc

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) ![pic](n): n

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 ![pic](_): 

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

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
> Project release ![pic](1.0): 

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 ![pic](.rst): 

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) ![pic](index): 

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

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

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) ![pic](y): y
> Create Windows command file? (y/n) ![pic](y): n
  • 路径我希望是在当面目录的 doc 目录里,所以我加入了 doc,把生成 doc 相关的东西放到 doc 目录里面会妥当一些.
  • 项目名称和作者你就别照着我的填了.
  • autodoc 要改成y 其他的看你的需要来改就可以了.

输错了没关系.到doc/conf.py自己改就可以了.

从 docstring 生成 doc

配置修改

sphinx还是有些脑残的,自信的认为,源代码和它的那些乱七八糟的东西是放在一起的.

编辑 conf.py, 打开这行的注释,并且把.修改为..

sys.path.insert(0, os.path.abspath('..'))

生成 rst

到代码目录,执行以下命令

sphinx-apidoc -o ./doc ./

会生成对应 python 文件名的 rst 文件

Creating file ./doc/public.rst.
Creating file ./doc/test.rst.
Creating file ./doc/modules.rst.

生成 html

进入 doc 执行

cd doc
make html

打开 html, 愉快的浏览吧

cd _build/html/
open index.html

愉快的浏览 api 吧


comments powered by Disqus