Problem beim Importieren von Dateien in Django settings.py

8

Ich habe ein Django-Projekt, das mit settings.py ziemlich gut zu funktionieren scheint, was auch ein local_settings.py ohne Probleme importiert hat.

Ich habe jetzt die folgenden Zeilen am Ende der Einstellungsdatei hinzugefügt:

%Vor%

extras.py ist eine Datei mit zusätzlichen Konfigurationsinformationen, die sich im selben Verzeichnis befindet wie settings.py und local_settings.py, aber ich bekomme jetzt:

%Vor%

Dies scheint wegen mir zu sein,

zu versuchen %Vor%

in dieser extras.py-Datei.

Hat jemand Ideen?

Prost

    
interstar 05.07.2009, 22:41
quelle

2 Antworten

17

In der Regel eine Zeile wie

%Vor%

in settings.py wird zu einer zirkulären Abhängigkeit führen. Dies führt zu einem Importfehler, der in verschiedenen Versionen von Django leicht unterschiedlich angezeigt wird. Wenn ich beispielsweise diese Zeile zu einem funktionierenden Django-Setup hinzufüge und "manage.py shell" aufruft, bekomme ich:

  

Fehler: Die Datei kann nicht gefunden werden   'settings.py' im Verzeichnis   mit './manage.py'. Es erscheint   Du hast Dinge angepasst. Du wirst haben   um django-admin.py zu starten und zu übergeben   Ihr Einstellungsmodul. (Wenn die Datei   settings.py existiert tatsächlich, das ist es   verursacht irgendwie einen ImportError.)

Wenn ich diese Zeile entferne, ist alles wieder in Ordnung.

Der Grund dafür ist, dass Djangos Modelllademaschinerie (im Paket django.db.models ) settings.py importiert, INSTALLED_APPS liest, um zu sehen, welche Anwendungen installiert werden sollen, und diese dann lädt. (Sie können dies bestätigen, indem Sie für eine Ihrer installierten Anwendungen eine Druckanweisung zu __init__.py hinzufügen.)

Wenn Sie django.db sachen in settings.py importieren, führt dies zu einer zirkulären Importabhängigkeit und einer ImportError -bezogenen Fehlermeldung.

Eine Problemumgehung besteht darin, die Funktionalität, die die problematischen Importe (und die Importe selbst) erfordert, in eine App zu verschieben.

    
Vinay Sajip 06.07.2009, 09:25
quelle
3

Wie wird DJANGO_SETTINGS_MODULE in Ihrer Umgebung festgelegt? Es könnte entweder das sein oder das Ergebnis des impliziten Imports von Einstellungen, die Ihre anderen verschachtelten Importe verursachen, während Einstellungen importiert werden, eine "zirkuläre Abhängigkeit", die mehrere unangenehme Auswirkungen haben kann (obwohl ich nicht glaube, dass sie das haben würde) Spezifisches, das du beobachtest, also lehne ich mich der ersten Hypothese zu.

    
Alex Martelli 05.07.2009 23:26
quelle

Tags und Links