Я написал модуль Python, включающий подмодуль, написанный на C: сам модуль называется foo
, а C часть - foo._bar
. Структура выглядит так:
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 для документирования проекта, и используйте расширение autodoc в модуле foo
. Это означает, что мне нужно собрать проект, прежде чем я смогу собрать документацию.
Поскольку я собираю с помощью distutils, собранный модуль попадает в некоторый каталог с переменным именем build / lib.linux-ARCH-PYVERSION
- это означает, что я не могу просто жестко запрограммировать каталог в Sphinx ' conf.py
.
Итак, как мне настроить мой сценарий distutils setup.py
для запуска Sphinx Builder поверх встроенного модуля?
Для полноты, вот вызов 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])