Django (1.5) funciona bien para mí, pero cuando enciendo el intérprete de Python (Python 3) para verificar algunas cosas, obtengo el error más extraño cuando intento importar - 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.
¿Cómo podría configurarse incorrectamente, cuando funciona bien fuera del intérprete de Python? En mi configuración de Django, la DATABASES
configuración es:
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.
}
}
... ¿cómo se configura esto incorrectamente?
unset DJANGO_SETTINGS_MODULE
. Me encontraba con un problema en el que había configurado la variable var en mi .bashrcRespuestas:
No puedes simplemente iniciar Python y verificar cosas, Django no sabe en qué proyecto quieres trabajar. Tienes que hacer una de estas cosas:
python manage.py shell
django-admin.py shell --settings=mysite.settings
(o cualquier módulo de configuración que use)DJANGO_SETTINGS_MODULE
la variable de entorno en su sistema operativo paramysite.settings
(Esto se elimina en Django 1.6) Uso
setup_environ
en el intérprete de Python:Naturalmente, la primera forma es la más fácil.
fuente
setup_environ
se elimina en 1.6, pero--settings
debería funcionar. ¿Está seguro de que su configuración está más alláFirstBlog.settings
, y no solosettings
en el directorio actual?$ export DJANGO_SETTINGS_MODULE="my_project.settings"
DJANGO_SETTINGS_MODULE=(project directory name).settings
En su shell de python / ipython haga:
fuente
Apps aren't loaded yet.
En 2017 con django 1.11.5 y python 3.6 ( del comentario esto también funciona con Python 2.7 ):
El
.py
en el que pones este código debe estar enmysite
(el padre)fuente
.py
debe colocarse en la raíz , lo que significa que está junto con manage.py. ¿Cómo lo coloco dentro de carpetas aleatorias?if __name__ == "__main__":
no funcionará correctamente :)En Django 1.9, intenté
django-admin runserver
y obtuve el mismo error, pero cuando lo usépython manage.py runserver
obtuve el resultado deseado. ¡Esto puede resolver este error para mucha gente!fuente
En mi caso, obtuve esto al intentar ejecutar pruebas de Django a través de PyCharm. Creo que es porque PyCharm no carga la configuración inicial del proyecto Django, es decir, las que se
manage.py shell
ejecutan inicialmente. Uno puede agregarlos al inicio del script de prueba o simplemente ejecutar las pruebas usandomanage.py test
.Versiones
fuente
en mi propio caso en django 1.10.1 ejecutándose en python2.7.11, estaba tratando de iniciar el servidor usando en
django-admin runserver
lugar demanage.py runserver
en mi directorio de proyecto.fuente
Para las personas que usan IntelliJ, con esta configuración pude consultar desde el shell (en Windows).
fuente