Sphinx: so schließen Sie die Importe in automodule?
Ich habe ein Raspberry Pi Projekt, geschrieben in Python, benutzt RPi.GPIO-Modul. Alle arbeiten am code erfolgt auf einer Windows box, wo der RPi.GPIO nicht installieren und jedes mal, wenn ich versuche zu laufen autodoc stürzt es ab, die sagen, es kann nicht import RPi.GPIO.
D:\cube\docs\ledcube.rst:4: WARNING: autodoc: failed to import module u'ledcube'
; the following exception was raised:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\sphinx-1.2b1-py2.7.egg\sphinx\ext\autodoc.
py", line 326, in import_object
__import__(self.modname)
File "D:\cube\ledcube.py", line 2, in <module>
import RPi.GPIO as GPIO
ImportError: No module named RPi.GPIO
Jede Möglichkeit, um dieses?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit zu sagen, Sphinx um einige Importe. Bei der Verwendung von autodoc, alles dokumentiert-Module werden sauber importiert.
Möglicherweise können Sie das problem umgehen, indem Sie einige mocking. Hier ist ein Artikel, der die Lösung für ein problem, das scheint ziemlich ähnlich zu verkaufen: http://blog.rtwilson.com/how-to-make-your-sphinx-documentation-compile-with-readthedocs-when-youre-using-numpy-and-scipy/. Hier ist ein kleines Codebeispiel (soll Hinzugefügt werden conf.py):
Könnten Sie möglicherweise installieren müssen python-mock für die oben genannten arbeiten:
sudo apt-get install python-mock
Update
Seit Sphinx 1.3, es ist einfacher einzurichten Spott. Fügen Sie einfach die Module, die er verspottet, der
autodoc_mock_imports
Konfiguration Wert.autodoc_mock_imports
ausschließen Einfuhren.Neben mocking-Module, ich hatte auch mock-Aufrufe, die nur Sinn machte in meinen embedded Systems (z.B. mocking Aufruf einer Funktion
read_reg()
aus dem Modulexamplemod
liest ein register aus einem FPGA über SPI).Beachten Sie, dass Sie brauchen, python-mox:
sudo apt-get install python-mox
Referenz: Wie generieren sphinx-Dokumentation für python-code läuft in einem eingebetteten system
Gerade vor ein paar Minuten habe ich eine andere Lösung gefunden:
Nicht platzieren Sie "import RPi.GPIO" an den Anfang der Datei.
Platzieren Sie Sie innerhalb der Funktion /Methode (vielleicht kein guter Stil).
So sphinx wird es nicht sehen und eine Dokumentation erstellen.
Aber die Lösung mit mocking besser ist, hier ist ein link:
http://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#confval-autodoc_mock_imports
Nur die folgende Zeile hinzufügen conf.py (RPi und serial sind Beispiele):