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
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.
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.
Tags und Links django configuration