Napisałem moduł Pythona zawierający moduł podpisany w C: sam moduł nazywa się foo
, a część C to foo._bar
. Struktura wygląda następująco:Używanie Sphinx z rozszerzeniem C opartym na distutils
src/
foo/__init__.py <- contains the public stuff
foo/_bar/bar.c <- the C extension
doc/ <- Sphinx configuration
conf.py
...
foo/__init__.py
importu _bar
aby ją poszerzyć i użyteczne rzeczy jest wystawiony w module foo
. Działa to dobrze, gdy jest zbudowany, ale oczywiście nie będzie działać w formie nieskompilowanej, ponieważ _bar
nie istnieje, dopóki nie zostanie zbudowany.
Chciałbym użyć Sphinx do udokumentowania projektu i użyć rozszerzenia autodoc na module foo
. Oznacza to, że muszę zbudować projekt, zanim będę mógł zbudować dokumentację.
Odkąd zbudowałem z distutils, zbudowany moduł kończy się w jakimś zmiennie nazwanym dir build/lib.linux-ARCH-PYVERSION
- co oznacza, że nie mogę po prostu zakodować katalogu w Sphinx 'conf.py
.
Jak skonfigurować skrypt distutils setup.py
, aby uruchomić program budujący Sphinx na zbudowanym module?
Dla kompletności, oto wywołanie setup
(rzeczy „fałszywy” są niestandardowe budowniczych że podklasa build
i 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])
To całkiem dobre podejście - mógłbym to umieścić w 'conf.py' (chyba). Spróbuję tego jutro. – detly
Aha ... Musiałem użyć 'build_lib', a nie' build_temp', i pomieszać z moją kompilacją krzyżową, ale wydaje się, że działa (i na części rozszerzenia też, jako dodatkowy bonus!) – detly
Cool, jeśli chcesz, abym mógł dodać więcej szczegółów (lub dodać dokładną odpowiedź, aby inni mogli skorzystać). – TryPyPy