この質問は私が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
正解は:
- (プロジェクト名はどこにありますか?)
DJANGO_SETTINGS_MODULE
に設定してください。project.project.settings
project
- 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
問題ない!