Django (1.5) funktioniert gut für mich, aber wenn ich den Python-Interpreter (Python 3) starte, um einige Dinge zu überprüfen, erhalte ich den seltsamsten Fehler, wenn ich versuche zu importieren - from django.contrib.auth.models import User
-
Traceback (most recent call last):
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 36, in _setup
settings_module = os.environ[ENVIRONMENT_VARIABLE]
File "/usr/lib/python3.2/os.py", line 450, in __getitem__
value = self._data[self.encodekey(key)]
KeyError: b'DJANGO_SETTINGS_MODULE'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/dist-packages/django/contrib/auth/models.py", line 8, in <module>
from django.db import models
File "/usr/local/lib/python3.2/dist-packages/django/db/__init__.py", line 11, in <module>
if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES:
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 52, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.2/dist-packages/django/conf/__init__.py", line 45, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES,
but settings are not configured. You must either define the environment
variable DJANGO_SETTINGS_MODULE or call settings.configure()
before accessing settings.
Wie kann es falsch konfiguriert werden, wenn es außerhalb des Python-Interpreters einwandfrei funktioniert? In meinen Django-Einstellungen sind die DATABASES
Einstellungen:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_db', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'zamphatta',
'PASSWORD': 'mypassword91',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}
... wie ist das falsch konfiguriert?
unset DJANGO_SETTINGS_MODULE
. Ich stieß auf ein Problem, bei dem ich die env var in meiner .bashrcAntworten:
Sie können Python nicht einfach starten und Dinge überprüfen, Django weiß nicht, an welchem Projekt Sie arbeiten möchten. Sie müssen eines dieser Dinge tun:
python manage.py shell
django-admin.py shell --settings=mysite.settings
(oder welches Einstellungsmodul Sie auch verwenden)DJANGO_SETTINGS_MODULE
Umgebungsvariable in Ihrem Betriebssystem aufmysite.settings
(Dies wird in Django 1.6 entfernt.) Verwendung
setup_environ
im Python-Interpreter:Natürlich ist der erste Weg der einfachste.
quelle
setup_environ
wird in 1.6 entfernt,--settings
sollte aber funktionieren. Sind Sie sicher, dass Ihre Einstellungen weiterFirstBlog.settings
und nicht nur imsettings
aktuellen Verzeichnis gespeichert sind ?$ export DJANGO_SETTINGS_MODULE="my_project.settings"
DJANGO_SETTINGS_MODULE=(project directory name).settings
Führen Sie in Ihrer Python-Shell / Ipython Folgendes aus:
quelle
Apps aren't loaded yet.
2017 mit Django 1.11.5 und Python 3.6 ( aus dem Kommentar geht hervor, dass dies auch mit Python 2.7 funktioniert ):
Das,
.py
in das Sie diesen Code einfügen, sollte seinmysite
(das übergeordnete)quelle
.py
sollte an der Wurzel platziert werden , was bedeutet, dass es zusammen mit manage.py ist. Wie lege ich es in zufällige Ordner?if __name__ == "__main__":
, das nicht richtig funktioniert :)Auf Django 1.9 habe ich versucht,
django-admin runserver
den gleichen Fehler zu erhalten, aber als ich ihn verwendet habe, habepython manage.py runserver
ich das beabsichtigte Ergebnis erhalten. Dies kann diesen Fehler für viele Menschen lösen!quelle
In meinem Fall habe ich dies erhalten, als ich versucht habe, Django-Tests über PyCharm auszuführen. Ich denke, das liegt daran, dass PyCharm die anfänglichen Django-Projekteinstellungen nicht lädt, dh die,
manage.py shell
die anfänglich ausgeführt werden. Sie können sie zum Start des Testskripts hinzufügen oder die Tests einfach mit ausführenmanage.py test
.Versionen:
quelle
In meinem eigenen Fall in Django 1.10.1, das unter Python2.7.11 ausgeführt wird, habe ich versucht, den Server mit
django-admin runserver
anstattmanage.py runserver
in meinem Projektverzeichnis zu starten .quelle
Für Benutzer von IntelliJ konnte ich mit diesen Einstellungen über die Shell (unter Windows) abfragen.
quelle