Django DB 설정 '잘못된 구성'오류


170

Django (1.5)는 나에게 잘 작동하지만 Python 인터프리터 (Python 3)를 실행하여 몇 가지 사항을 확인하면 가져 오기를 시도 할 때 가장 이상한 오류가 발생합니다 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.

파이썬 인터프리터 밖에서 잘 작동하면 어떻게 잘못 구성 할 수 있습니까? Django 설정에서 DATABASES설정은 다음과 같습니다.

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.
    }
}

... 이것이 어떻게 잘못 구성되어 있습니까?


새 프로젝트를 설정할 때이 문제를 해결했습니다. 나는 그것이 도움이된다고 생각했다 unset DJANGO_SETTINGS_MODULE.
0:08에

답변:


264

Django는 Python을 시작하고 확인하는 것뿐만 아니라 어떤 프로젝트를 진행할지 알지 못합니다. 다음 중 하나를 수행해야합니다.

  • 사용하다 python manage.py shell
  • 사용 django-admin.py shell --settings=mysite.settings(또는 사용 하는 설정 모듈)
  • 세트 DJANGO_SETTINGS_MODULE로 OS에서 환경 변수mysite.settings
  • (이것은 장고 1.6에서 제거되었습니다.) setup_environ파이썬 인터프리터에서 사용 :

    from django.core.management import setup_environ
    from mysite import settings
    
    setup_environ(settings)
    

당연히 첫 번째 방법이 가장 쉽습니다.


감사! 그것은 문서에서 나에게 분명하지 않았거나, 내가 읽을 필요가있을 때까지 읽었고 잊었을 수도 있습니다.
Zamphatta

6
이상하게도 'mysite.settings'파일을 찾을 수 없지만 mysite / settings.py로 바로 거기에 앉아있는 것을 볼 수 있습니다. 어! 나는 장고를 싫어하기 시작했다.
Zamphatta

3
예, setup_environ1.6에서 제거되었지만 --settings작동합니다. 현재 디렉토리 FirstBlog.settings뿐만 아니라 설정이 추가로 확실 settings합니까?
Pavel Anossov

21
위의 어느 것도 나를 위해 일한 것은 아니지만이 일은 다음과 같습니다.$ export DJANGO_SETTINGS_MODULE="my_project.settings"
Thumbz

22
에서 PyCharm 이 작업을 수행 할 수있는 장소가 실행이 | 구성 편집 | (예 : 프로젝트의 단위 테스트) | 구성 | 환경 | 환경 변수 : DJANGO_SETTINGS_MODULE=(project directory name).settings
Bob Stein

41

파이썬 쉘 / 파이썬에서 다음을 수행하십시오.

from django.conf import settings

settings.configure()

11
Apps aren't loaded yet.
Daniil Mashkin 12

26

django 1.11.5 및 python 3.6이있는 2017 년 에는 주석에서 Python 2.7 과도 작동합니다 .

import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
django.setup()

.py이 코드를 삽입하는가에 있어야합니다 mysite(부모 일)


고마워요, 다른 솔루션은 제 경우에 효과가
없었습니다

파이썬 2.7과 협력도
Александр

이것은 root에.py 위치해야하며 , 이는 manage.py와 함께 있음을 의미합니다. 임의의 폴더 안에 어떻게 배치합니까?
익명

1
파일의 맨 위에 놓은 경우에만 작동합니다. if __name__ == "__main__":제대로 작동하지 않는 것과 같은 파일을 넣으면 작동합니다.
Josh Correia

11

Django 1.9 django-admin runserver에서 동일한 오류가 발생했지만 사용했을 때 python manage.py runserver의도 한 결과를 얻었습니다. 이것은 많은 사람들 에게이 오류를 해결할 수 있습니다!


django 1.10에서도 동일하지만 loaddata 명령을 실행하는 동안
amchugh89

4

필자의 경우 PyCharm을 통해 Django 테스트를 실행하려고 할 때 이것을 얻었습니다. PyCharm이 초기 Django 프로젝트 설정, 즉 manage.py shell처음 실행되는 설정을로드하지 않기 때문이라고 생각합니다 . 테스트 스크립트의 시작 부분에 추가하거나을 사용하여 테스트를 실행할 수 manage.py test있습니다.

버전 :

  • Python 3.5 (virtualenv에서)
  • PyCharm 2016.3.2 전문가
  • 장고 1.10

3

python2.7.11에서 실행되는 django 1.10.1의 경우에는 프로젝트 디렉토리 django-admin runserver대신 서버를 시작하려고했습니다 manage.py runserver.


0

IntelliJ를 사용하는 사람들의 경우이 설정을 사용하여 쉘 (Windows)에서 쿼리 할 수있었습니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.