Python 셸에서 가져오려고 하면 Django에서 ImproperlyConfigured 오류가 발생하는 이유는 무엇입니까?

Python 셸에서 가져오려고 하면 Django에서 ImproperlyConfigured 오류가 발생하는 이유는 무엇입니까?

이 질문은 제가 Django를 사용하기 시작한 이후로 저를 괴롭혔습니다. project앱이 포함된 프로젝트가 있고 app이를 검사하고 싶다고 가정해 보겠습니다. 따라서 Python 셸에서 해당 부분을 가져올 수 있습니다.

(virtualenv) $ PYTHONPATH=. python
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import project.app.views
(...cut traceback...)
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS,
but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE
or call settings.configure() before accessing settings.

아름다운. 그래서 당신은 다음을 설정했습니다 DJANGO_SETTINGS_MODULE:

(virtualenv) $ PYTHONPATH=. DJANGO_SETTINGS_MODULE=project.project.settings python
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import project.app.views
(...cut traceback...)
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

다음에 무엇을 해야할지에 대한 설명이 없습니다.

답변1

정답은:

  1. ( 프로젝트 이름은 어디에 있습니까?) DJANGO_SETTINGS_MODULE로 설정하세요 .project.project.settingsproject
  2. Python 셸에서는 import django; django.setup()이것이 가장 먼저 수행하는 작업입니다.

예를 들면 다음과 같습니다.

(virtualenv) $ PYTHONPATH=. DJANGO_SETTINGS_MODULE=project.project.settings python
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django; django.setup()
>>> import project.app.views

문제 없다!

관련 정보