Wie verwende ich Sphinx mit Cython?

Ich habe kürzlich ein Projekt von mir cythonisiert, indem ich alle Module (mit Ausnahme der obersten Ebene) umbenannt habe__init__.py) bis*.pyxund durch Puttenext_modules = [Extension('foo', ['foo.pyx'])] imsetup.py. Bauen und Installieren funktioniert einwandfrei. Wenn ich es jedoch tuecd doc; make html, Sphinx schlägt fehl, weil es keine der jetzt verfügbaren Module importieren kann*.pyx.

Wenn ich bearbeitedoc/conf.py und ändernsys.path.insert(0, os.path.abspath('..')) zusys.path.insert(0, os.path.abspath('../build/temp.linux-x86_64-2.7')), dann kann Sphinx alle Module finden und Dokumentation erstellen, aber in diesem Fall erhalte ich Fehler wieerror while formatting arguments for foo.bar: <built-in function bar> is not a Python function. Vermutlich liegt das daran, dass Sphinx nur noch Zugriff auf das hat*.so Dateien, nicht die Quelldateien. Das gleichesys.path Änderung ermöglicht auch das Ausführen der doctests über Sphinx (make doctest).

Die andere Lösung, die ich ausprobiert habe, war die Verwendung der Erweiterung*.py anstatt*.pyx (und mitext_modules = [Extension('foo', ['foo.py'])] imsetup.py). In diesem Fall wird die Dokumentation korrekt erstellt, aber ich denke, die Doctests umgehen jetzt Cython.

Ich konnte online keine Informationen über die gemeinsame Verwendung von Sphinx und Cython finden. Ich habe mir den Quellcode für einige Projekte angesehen, die beide verwenden, aber anscheinend verwenden sie keine Docstrings in der*.pyx Dateien. Ich weiß, dass Sage es tut, aber dieses Projekt ist zu kompliziert, als dass ich es auseinander nehmen könnte.

Unterstützt Sphinx Docstrings in Cython-Dateien? Wenn ja, wie mache ich das?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage