Использование Sphinx с расширением C, созданным с помощью distutils

Я написал модуль 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])

7
задан mzjn 18 July 2011 в 18:30
поделиться