我已经编写了一个Python模块,其中包含一个用C语言编写的子模块:模块本身名为foo
,C部分为foo._bar
。该结构是这样的:将Sphinx与distutils构建的C扩展结合使用
src/
foo/__init__.py <- contains the public stuff
foo/_bar/bar.c <- the C extension
doc/ <- Sphinx configuration
conf.py
...
foo/__init__.py
进口_bar
以加强它,并且有用的东西是foo
模块中暴露出来。这在构建时工作正常,但显然不能以未编译的形式工作,因为_bar
在构建之前不存在。
我想使用Sphinx来记录项目,并在foo
模块上使用autodoc扩展名。这意味着我需要在构建文档之前构建项目。
由于我使用distutils构建,所构建的模块最终以一些不同名称的dir build/lib.linux-ARCH-PYVERSION
- 这意味着我不能将目录硬编码到一个Sphinx'conf.py
。
那么,如何配置我的distutils setup.py
脚本以在构建的模块上运行Sphinx生成器?
为了完整起见,这里的调用setup
(即“假”的东西是继承build
和build_ext
自定义生成器):
setup(cmdclass = {
'fake': fake,
'build_ext_fake' : build_ext_fake
},
package_dir = {'': 'src'},
packages = ['foo'],
name = 'foo',
version = '0.1',
description = desc,
ext_modules = [module_real])
这是一个很好的方法 - 我可以把它放在`conf.py`(我认为)。我明天会尝试。 – detly 2011-01-16 06:56:01