Django (1.5) fonctionne bien pour moi, mais lorsque je lance l'interpréteur Python (Python 3) pour vérifier certaines choses, j'obtiens l'erreur la plus étrange lorsque j'essaye d'importer - 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.
Comment pourrait-il être mal configuré, alors qu'il fonctionne bien en dehors de l'interpréteur Python? Dans mes paramètres Django, les DATABASES
paramètres sont:
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.
}
}
... comment est-ce mal configuré?
unset DJANGO_SETTINGS_MODULE
. Je rencontrais un problème où j'avais défini la var d'Réponses:
Vous ne pouvez pas simplement lancer Python et vérifier les choses, Django ne sait pas sur quel projet vous voulez travailler. Vous devez faire l'une de ces choses:
python manage.py shell
django-admin.py shell --settings=mysite.settings
(ou quel que soit le module de paramètres que vous utilisez)DJANGO_SETTINGS_MODULE
la variable d'environnement de votre système d'exploitation surmysite.settings
(Ceci est supprimé dans Django 1.6) Utilisation
setup_environ
dans l'interpréteur python:Naturellement, la première méthode est la plus simple.
la source
setup_environ
est supprimé dans 1.6, mais--settings
devrait fonctionner. Êtes-vous sûr que vos paramètres sont plus loinFirstBlog.settings
, et pas seulementsettings
dans le répertoire actuel?$ export DJANGO_SETTINGS_MODULE="my_project.settings"
DJANGO_SETTINGS_MODULE=(project directory name).settings
Dans votre shell python / ipython, faites:
la source
Apps aren't loaded yet.
En 2017 avec django 1.11.5 et python 3.6 (d' après le commentaire, cela fonctionne également avec Python 2.7 ):
Le
.py
dans lequel vous mettez ce code devrait être dansmysite
(le parent)la source
.py
doit être placé à la racine , ce qui signifie qu'il est avec manage.py. Comment le placer dans des dossiers aléatoires?if __name__ == "__main__":
ça ne fonctionnera pas correctement :)Sur Django 1.9, j'ai essayé
django-admin runserver
et j'ai eu la même erreur, mais quand j'ai utilisé,python manage.py runserver
j'ai obtenu le résultat escompté. Cela peut résoudre cette erreur pour beaucoup de gens!la source
Dans mon cas, j'ai obtenu cela en essayant d'exécuter des tests Django via PyCharm. Je pense que c'est parce que PyCharm ne charge pas les paramètres initiaux du projet Django, c'est-à-dire ceux qui
manage.py shell
s'exécutent initialement. On peut les ajouter au début du script de test ou simplement exécuter les tests en utilisantmanage.py test
.Versions:
la source
dans mon propre cas dans django 1.10.1 fonctionnant sur python2.7.11, j'essayais de démarrer le serveur en utilisant
django-admin runserver
plutôt quemanage.py runserver
dans mon répertoire de projet.la source
Pour les personnes utilisant IntelliJ, avec ces paramètres, j'ai pu interroger depuis le shell (sous Windows).
la source