2012-03-23 1 views
5

Ich habe eine Django-App, für die ich eine Dokumentation erstellen möchte. Die Verzeichnisstruktur ist wie folgt:Einrichten von Django-Einstellungen für Sphinx (Dokumentation)

- doc 
- project 
| - manage.py 

Ich habe die Pfade so einrichten, dass Sphinx Dinge sehen kann, aber wenn ich versuche, Autodoc zu verwenden, einige der Einstellungen, die ich in settings.py gesetzt haben, sind nicht verfügbar. So richte ich die Umgebung ein: Was mache ich falsch?

from django.core.management import setup_environ 
from project import settings 

setup_environ(settings, 'project.settings') 
+0

Sind einige Einstellungen dokumentiert, während andere Einstellungen nicht sind? Können Sie uns (einen relevanten Teil davon) die Datei settings.py zeigen? – mzjn

+0

Wo genau richten Sie diese Umgebung ein? Wenn es in deiner Sphinx 'conf.py' ist, ok. Wenn sie sich in einer anderen Datei befinden (wie manage.py), hat sphinx sie möglicherweise nicht gelesen. –

+0

@ Brian-Hicks, haben Sie irgendwelche Updates auf, wo Sie diesen env Setup-Code haben? –

Antwort

7

Ich kann nur an zwei Ursachen, warum der setup_environ() Anruf in Ihrer Sphinx conf.py funktioniert nicht:

  • Es ist nicht seine Magie tut früh genug. Sie importieren andere Dinge, die bereits die Einstellungen vor dieser Zeile benötigen.

  • Die settings.py selbst importiert zu viel. Wäre aber seltsam, wenn das der Fall ist.

Beachten Sie, dass setup_environ() veraltet ist. Es wird jedoch nicht bis Django 1.6 entfernt.

Eine weitere Option ist os.environ direkt an der Spitze Ihrer conf.py Skript. Sie sind garantiert in der Zeit da :-)

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 
+1

Ich tat das Äquivalent, indem ich den Befehl ausführte, während ich 'DJANGO_SETTINGS_MODULE' spezifizierte. Das hätte auch funktioniert. –