2012-11-14 4 views
6

Ich versuche, meine Sphinx-Dokumentation mit den Dokumenten zu verknüpfen. Ich kann die Dokumentation vor Ort bauen, aber wenn ich versuche, die Dokumente automatisch in die Dokumentation i die folgende Fehlermeldung erzeugen gelesen haben:ImportError für meinen Code auf Readthedocs

Sphinx Standardfehler

Making output directory... 

Exception occurred: 
    File "/var/build/user_builds/mousedb/checkouts/latest/Docs/source/conf.py", line 25, in <module> 
    from mousedb import settings 
ImportError: No module named mousedb 
The full traceback has been saved in /tmp/sphinx-err-n_8fkR.log, if you want to report the issue to the developers. 
Please also report this if it was a user error, so that a better error message can be provided next time. 
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>, 
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks! 

Mein Projektname mousedb ist. Ich verstehe nicht, warum ich diesen Importfehler im Auto-Build aber nicht lokal bekomme.

aktualisiert

Basierend auf den Kommentaren ich denke, dass diese Datei in ein Geschwister Verzeichnis Docs ein Problem ist meine Einstellungen für den Import. Anstatt einen absoluten Import auszuführen (wie ich es gemacht habe), sollte ich einen relativen Import basierend auf dem Speicherort von settings.py und conf.py machen.

Ich möchte meine Einstellungsdatei in meine conf.py mit der importieren Verzeichnisstruktur folgt:

-mousedb 
--settings.py 
-Docs 
--source 
---conf.py 
--build 
+2

Haben Sie versucht, in den RTD-Einstellungen das Kontrollkästchen 'Use virtualenv' zu aktivieren? Installieren Sie Ihr Projekt in einem virtualenv mit setup.py installieren –

+0

Ich versuchte, den gleichen Fehler. Ist es möglich, dass ich einen relativen Pfad in meinem sys.path.append anstelle eines absoluten Pfades verwenden muss (wie es bei meiner lokalen Installation der Fall ist) – Dave

+1

Ihr lokaler absoluter Pfad ist fast garantiert nicht auf dem Server von readthedocs vorhanden: -) –

Antwort

7

Sie ursprünglich von einem „lokalen absoluten Pfad zu meinem Code“ gesprochen und jetzt über relative Pfade zu Ihrem Code einrichten. Dies bedeutet wahrscheinlich, dass Sie keine setup.py Datei und auch kein virtualenv verwenden.

Im selben Verzeichnis wie Docs/ und mousedb/, fügen Sie ein setup.py:

from setuptools import setup 

setup(name='mousedb', 
     version='0.1', 
     description="My sample package", 
     long_description="", 
     author='TODO', 
     author_email='[email protected]', 
     license='TODO', 
     packages=['mousedb'], 
     zip_safe=False, 
     install_requires=[ 
      'Django', 
      # 'Sphinx', 
      # ^^^ Not sure if this is needed on readthedocs.org 
      # 'something else?', 
      ], 
    ) 

Nach Begehung/Schiebe-/was auch immer diese Datei, die Sie Ihre readthedocs Einstellungen für Ihr Projekt gehen. Aktivieren Sie die Einstellung "virtualenv verwenden". Dies führt dazu, dass Sie Ihr Projekt in einem virtualenv mit setup.py installieren.

Das Endergebnis ist, dass alles, was python-related readthedocs hat, Ihr Projekt in seinem sys.path hat.

Die wahrscheinliche Ursache Ihrer Probleme ist, dass Sie Sphinx aus Ihrem "root" -Verzeichnis auf Ihrem lokalen System ausführen, wo Python magisch das mousedb/-Paket in Ihrem aktuellen Verzeichnis findet. Aber readthedocs läuft anscheinend aus dem Docs/ Verzeichnis und kann daher mousedb nicht finden.

Verwandte Themen