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

問題ない!

おすすめ記事