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.

Python インタープリターの外部で正常に動作する場合、どのように不適切に構成できますか? 私の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.
    }
}

...これはどのように不適切に構成されていますか?

4

7 に答える 7

266

Python を起動して確認することはできません。Django は、どのプロジェクトに取り組みたいかを認識していません。次のいずれかを行う必要があります。

  • 使用するpython manage.py shell
  • 使用django-admin.py shell --settings=mysite.settings(または使用する設定モジュール)
  • OSDJANGO_SETTINGS_MODULEの環境変数をmysite.settings
  • (これは Django 1.6 で削除されましsetup_environた) Python インタープリターで使用:

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

当然、最初の方法が最も簡単です。

于 2013-03-21T19:42:18.123 に答える
41

Python シェル/ipython で次のようにします。

from django.conf import settings

settings.configure()
于 2015-07-11T02:01:56.260 に答える
12

Django 1.9 で試してみるdjango-admin runserverと同じエラーが発生しましたが、使用python manage.py runserverすると意図した結果が得られました。これにより、多くの人にとってこのエラーが解決される可能性があります。

于 2016-09-22T18:05:52.983 に答える
4

私の場合、PyCharm を介して Django テストを実行しようとしたときにこれを取得しました。これは、PyCharm が Django プロジェクトの初期設定、つまり最初に実行する設定を読み込まないためだと思いますmanage.py shell。それらをテスト スクリプトの先頭に追加するか、単に を使用してテストを実行することができますmanage.py test

バージョン:

  • Python 3.5 (virtualenv 内)
  • PyCharm 2016.3.2 プロフェッショナル
  • ジャンゴ 1.10
于 2017-01-12T21:02:07.303 に答える
3

私の場合、python2.7.11で実行されているdjango 1.10.1で、プロジェクトディレクトリdjango-admin runserverの代わりに使用してサーバーを起動しようとしていました。manage.py runserver

于 2016-09-17T20:42:54.840 に答える