跳转到主要内容

ZC.buildout 配方,用于在buildout中生成和构建基于Sphinx的文档。

项目描述

详细文档

什么是Sphinx?

Sphinx是Python社区中构建文档的主要工具。参见https://sphinx-doc.cn

Python等许多其他项目现在都使用它。参见https://docs.pythonlang.cn

Sphinx使用reStructuredText,可用于编写基于buildout的应用程序。该食谱为您设置一切,因此您可以在buildout中提供漂亮的文档,可以是静态HTML、PDF甚至是epub。

将文档管理得像代码一样,使维护和更改变得容易。

快速开始

要使用该食谱,在buildout配置文件中添加类似以下内容的部分

[buildout]
parts =
    ...
    sphinxbuilder
    ...

[sphinxbuilder]
recipe = collective.recipe.sphinxbuilder
source = ${buildout:directory}/docs-source
build = ${buildout:directory}/docs

运行buildout,您将在bin文件夹中获得一些新脚本,名称为

  • sphinx-quickstart,用于快速启动Sphinx文档

  • sphinxbuilder,脚本将

要快速启动文档项目,就像您通常使用Sphinx一样运行

$ bin/sphinx-quickstart

回答几个问题,并将docs-source作为源文件夹。

要构建您的文档,只需运行sphinx脚本

$ bin/sphinxbuilder

就是这样!

您将在docs/html中获得一个闪亮的Sphinx文档。编写您的文档,进入docs-source。每次源代码更改时,sphinxbuilder都会再次运行脚本。

编写文档的好起点是:https://sphinx-doc.cn/contents.html

Plone 4

与Plone 4一起使用甚至更容易

[buildout]
parts =
    ...
    sphinxbuilder
    ...

[sphinxbuilder]
recipe = collective.recipe.sphinxbuilder
interpreter = ${buildout:directory}/bin/zopepy

遵循快速入门教程,并不要忘记添加带有已安装egg的解释器,以便使用Sphinx访问源代码。

支持选项

该食谱支持以下选项

build(默认:docs

指定构建文档的根目录。

source(默认:{build-directory}/source

指定文档的源目录。

outputs(默认:html

多行值,定义要生成的输出类型。可以是doctesthtmllatexpdfepub

script-name(默认:buildout部分名称)

生成的脚本名称

interpreter

使用sphinx-builder时使用的Python解释器的路径。

extra-paths

要插入到sys.path中的额外路径。

products

要扩展旧式Zope Products命名空间的额外产品目录。

示例用法

该食谱可以在没有任何选项的情况下使用。我们将首先创建一个使用该食谱的buildout

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... """)

让我们运行buildout

>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script..
Generated script '/sample-buildout/bin/sphinx-quickstart'.
Generated script '/sample-buildout/bin/sphinx-build'.
Generated script '/sample-buildout/bin/sphinx-apidoc'.
Generated script '/sample-buildout/bin/sphinx-autogen'...

我们期待什么?

一个包含Sphinx结构的docs文件夹

>>> docs = join(sample_buildout, 'docs')
>>> ls(docs)
- Makefile
-  make.bat

bin文件夹中有一个脚本用于构建文档

>>> bin = join(sample_buildout, 'bin')
>>> ls(bin)
- buildout
- sphinx-apidoc
- sphinx-autogen
- sphinx-build
- sphinx-quickstart
- sphinxbuilder

脚本内容是一个简单的shell脚本

>>> script = join(sample_buildout, 'bin', 'sphinxbuilder')
>>> print(open(script).read())
#!/bin/bash
cd ...docs
make html

>>> print('start ' + system(script))
start /sample-buildout/bin/sphinx-build -b html -d /sample-buildout/docs/doctrees ...src/collective/recipe/sphinxbuilder/docs /sample-buildout/docs/html
...

如果我们想生成latex,我们需要显式定义它

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... outputs =
...     html
...     latex
... """)
>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Uninstalling sphinxbuilder.
Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script...

现在让我们看看我们的脚本

>>> cat(script)
#!/bin/bash
cd ...docs
make html
make latex

最后让我们运行它

>>> print('start ' + system(script))
start /sample-buildout/bin/sphinx-build -b html -d /sample-buildout/docs/doctrees   .../src/collective/recipe/sphinxbuilder/docs /sample-buildout/docs/html
...
<BLANKLINE>
Build finished. The HTML pages are in /sample-buildout/docs/html.
...
Build finished; the LaTeX files are in /sample-buildout/docs/latex.
Run `make' in that directory to run these through (pdf)latex...
<BLANKLINE>

如果我们想生成pdf,我们需要显式定义它

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... outputs =
...     html
...     latex
...     pdf
... """)
>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Uninstalling sphinxbuilder.
Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script...

现在让我们看看我们的脚本

>>> cat(script)
#!/bin/bash
cd ...docs
make html
make latex
cd /sample-buildout/docs/latex && make all-pdf

由于PDF构建器依赖于可能未安装的库,我们将跳过在测试中运行脚本

如果我们要生成epub,就像pdf一样,我们需要显式定义它

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... outputs =
...     html
...     epub
... """)
>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Uninstalling sphinxbuilder.
Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script...

现在让我们看看我们的脚本

>>> cat(script)
#!/bin/bash
cd ...docs
make html
make epub

我们还可以在构建时运行文档中的任何doctests

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... outputs =
...     doctest
...     html
... """)
>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Uninstalling sphinxbuilder.
Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script...

现在让我们看看我们的脚本

>>> cat(script)
#!/bin/bash
cd ...docs
make doctest
make html

我们再次跳过运行它们,这次是为了避免递归fork bomb。;)

如果我们想使用extra-paths,我们可以将它们定义为正常路径或Unix通配符(请参阅fnmatch模块)

>>> write('buildout.cfg',
... """
... [buildout]
... parts = sphinxbuilder
...
... [sphinxbuilder]
... recipe = collective.recipe.sphinxbuilder
... source = collective.recipe.sphinxbuilder:docs
... extra-paths =
...     develop-eggs/
...     eggs/*
... """)
>>> print('start ' + system(buildout))
... # doctest: +ELLIPSIS
start Uninstalling sphinxbuilder.
Installing sphinxbuilder.
collective.recipe.sphinxbuilder: writing MAKEFILE..
collective.recipe.sphinxbuilder: writing BATCHFILE..
collective.recipe.sphinxbuilder: writing custom sphinx-builder script..
collective.recipe.sphinxbuilder: inserting extra-paths...

贡献者

  • Tarek Ziade,原作者

  • Rok Garbas

  • Sidnei da Silva

  • 汉斯-彼得·洛克

  • 多门·科扎尔

  • 特雷西·西弗

  • 莱因乌特·范·里斯,维护者

  • 塞巴斯蒂安·多什

变更

1.1 (2018-04-24)

  • 支持除bash之外的shell。[icemac]

1.0 (2016-07-11)

  • 增加了Windows支持。[tkhyn]

0.9 (2016-06-27)

0.8.2 (2013-11-28)

  • 在Python 3上安装时防止警告。[reinout]

0.8.1 (2013-11-27)

  • 添加Python 3分类器

0.8.0 (2013-11-27)

  • 增加了Python 3支持。[reinout]

0.7.4 (2013-11-15)

  • 更新到Buildout 2

  • 清理代码,使PEP8工具满意

0.7.3 (2013-02-16)

  • 修补sphinx-build脚本以使用sys.exit()终止

  • 添加warnings-html makefile选项

  • 安装sphinx-apidoc和sphinx-autogen脚本

  • 将所有txt文件重命名为rst文件

0.7.2 (2012-10-22)

  • 需要Sphinx >= 1.1

0.7.1 (2012-04-29)

  • 添加epub输出。

  • 修复测试
    • 在测试期间使用所需的包版本

    • 使用标准的doctest而不是zope.testing.doctest

0.7.0 (2010-09-10)

  • 需要Sphinx >= 1.0

0.6.3.3 (2010-07-15)

  • doctest选项添加到recipe的output选项(tseaver)

  • 放宽Sphinx所需的版本,允许使用0.6.4之后的版本(但仍小于0.7dev)。

0.6.3.2 (2010-02-08)

  • 修复了解释器选项[iElectric]

0.6.3.1 (2009-09-25)

  • 前一个版本的问题[garbas]

0.6.3 (2009-09-09)

  • 更新到Sphinx 0.6.3 [garbas]

  • 简化sphinxbuilder [garbas]

  • 更新文档 [garbas]

  • 解释器选项 [iElectric]

  • 添加日志[iElectric]

0.5.0 (2008-12-06)

  • 使其与最新的sphinx 0.5兼容 [Rok Garbas]

  • 允许指定‘product_directories’以能够记录旧式Zope产品。[Sidnei]

0.2.1 (2008-11-18)

  • 修复了清单文件并制作了修复版本 [Rok Garbas]

0.2.0 (2008-11-11)

  • 每次在parts/<buildout-section-name>下生成源树 [Rok Garbas]

  • 使用entry_point‘collective.recipe.sphinxbuilder’查找conf选项、源、静态和模板文件 [Rok Garbas]

  • 在docs/source设置自定义源文件夹 [Rok Garbas]

  • 将构建部分移动到docs/html、docs/latex [Rok Garbas]

0.1.1 (2008-09-11)

  • 使用环境中的本地sphinx-build [Tarek]

0.1.0 (2008-09-10)

  • 初始实现 [Tarek Ziade]

  • 使用ZopeSkel创建recipe [Tarek Ziade]。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

collective.recipe.sphinxbuilder-1.1.tar.gz (19.9 kB 查看哈希)

上传时间

由以下机构支持