O Django (1.5) está funcionando bem para mim, mas quando ligo o interpretador Python (Python 3) para verificar algumas coisas, recebo o erro mais estranho ao tentar 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.
Como ele pode ser configurado incorretamente, quando funciona bem fora do interpretador Python? Nas minhas configurações do Django, as DATABASES
configurações são:
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.
}
}
... como isso é configurado incorretamente?
unset DJANGO_SETTINGS_MODULE
. Eu estava correndo em um problema onde eu tinha fixado o env var no meu .bashrcRespostas:
Você não pode simplesmente iniciar o Python e verificar as coisas, o Django não sabe em qual projeto você deseja trabalhar. Você precisa fazer uma destas coisas:
python manage.py shell
django-admin.py shell --settings=mysite.settings
(ou qualquer módulo de configuração que você use)DJANGO_SETTINGS_MODULE
a variável de ambiente no seu sistema operacional comomysite.settings
(Isso é removido no Django 1.6) Use
setup_environ
no interpretador python:Naturalmente, a primeira maneira é a mais fácil.
fonte
setup_environ
é removido no 1.6, mas--settings
deve funcionar. Você tem certeza de que suas configurações estão mais avançadasFirstBlog.settings
, e não apenas nosettings
diretório atual?$ export DJANGO_SETTINGS_MODULE="my_project.settings"
DJANGO_SETTINGS_MODULE=(project directory name).settings
No seu shell python / ipython, faça:
fonte
Apps aren't loaded yet.
Em 2017 com o django 1.11.5 e python 3.6 (a partir do comentário, isso também funciona com o Python 2.7 ):
O
.py
código em que você coloca esse códigomysite
(o principal)fonte
.py
deve ser colocado na raiz , o que significa que está junto com o manage.py. Como o coloco dentro de pastas aleatórias?if __name__ == "__main__":
se não funcionasse corretamente :)No Django 1.9, tentei
django-admin runserver
e obtive o mesmo erro, mas quando o useipython manage.py runserver
, obtive o resultado pretendido. Isso pode resolver esse erro para muitas pessoas!fonte
No meu caso, consegui isso ao tentar executar testes do Django através do PyCharm. Eu acho que é porque o PyCharm não carrega as configurações iniciais do projeto Django, ou seja, aquelas que são
manage.py shell
executadas inicialmente. Pode-se adicioná-los ao início do script de teste ou apenas executar os testes usandomanage.py test
.Versões:
fonte
no meu próprio caso no django 1.10.1 em execução no python2.7.11, eu estava tentando iniciar o servidor usando, em
django-admin runserver
vez demanage.py runserver
no meu diretório do projeto.fonte
Para as pessoas que usam o IntelliJ, com essas configurações, fui capaz de consultar a partir do shell (no Windows).
fonte