web-dev-qa-db-ja.com

django.core.exceptions.ImproperlyConfigured:CACHESの設定を要求しましたが、設定は構成されていません。環境変数を定義する必要があります

私はこの問題を解決するために見つけることができるすべてを試してみましたが、少し髪を引き裂き始めています。私はこのエラーを受け取っています:

Django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable Django_SETTINGS_MODULE or call settings.configure() before accessing settings.

私のスクリプトは私がそうするときうまく動きます:

python3 ./manage.py runserver

ただし、テストを実行しようとすると、上記のエラーが発生します...グローバルに何も継承しないVirtualEnvを使用し、すべてが(正しいバージョンで)インストールされ、私のmanage.py内に設定しました:

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")

私はPyCharm Proffesionalを使用して開発しており、IDEとシェルの両方でテストを実行しようとしました。私が使用しているシェル内:

python3 manage.py test     

シェルはテストを見つけていません。このテストは基本的なものであり、私が苦労している環境であるため、私は現在、その内容について本当に心配しているわけではありません。 [〜#〜] update [〜#〜]:シェルの問題を解決しました。テストは次によって定義されなければなりません:

def test_<name>():

しかし、これはPyCharmの私の問題を解決していません。私も呼ばれています:

settings.configure()

それは既に設定されていることを教えてくれました。
私はnotであり、Djangoで任意のデータベースを使用していることに注意してください。設定から適切なことをコメントしました。

完全なエラーは次のとおりです。

  Traceback (most recent call last):
  File "/root/kiloenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 38, in _setup
    settings_module = os.environ[ENVIRONMENT_VARIABLE]
  File "/usr/lib/python3.4/os.py", line 631, in __getitem__
    raise KeyError(key) from None
KeyError: 'Django_SETTINGS_MODULE'

During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/home/<username>/Documents/<dirname>/<appname>/tests.py", line 1, in <module>
        from Django.test.utils import setup_test_environment
      File "/root/virtualenv/lib/python3.4/site-packages/Django/test/__init__.py", line 5, in <module>
        from Django.test.client import Client, RequestFactory
      File "/root/virtualenv/lib/python3.4/site-packages/Django/test/client.py", line 11, in <module>
        from Django.contrib.auth import authenticate, login, logout, get_user_model
      File "/root/virtualenv/lib/python3.4/site-packages/Django/contrib/auth/__init__.py", line 6, in <module>
        from Django.middleware.csrf import rotate_token
      File "/root/virtualenv/lib/python3.4/site-packages/Django/middleware/csrf.py", line 14, in <module>
        from Django.utils.cache import patch_vary_headers
      File "/root/virtualenv/lib/python3.4/site-packages/Django/utils/cache.py", line 26, in <module>
        from Django.core.cache import get_cache
      File "/root/virtualenv/lib/python3.4/site-packages/Django/core/cache/__init__.py", line 69, in <module>
        if DEFAULT_CACHE_ALIAS not in settings.CACHES:
      File "/root/virtualenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 54, in __getattr__
        self._setup(name)
      File "/root/virtualenv/lib/python3.4/site-packages/Django/conf/__init__.py", line 47, in _setup
        % (desc, ENVIRONMENT_VARIABLE))
    Django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable Django_SETTINGS_MODULE or call settings.configure() before accessing settings.

Sudoの下でPyCharmを実行し、ルートの下にenvを保存しているときに問題が許可ではなかったことを確認しました。

[〜#〜] edit [〜#〜]:Djangoを使用しないテストが正常に実行されているが、Pycharmはまだスローしていることを発見しましたこれらの失敗は個々のテストではなく、ここで言及したエラーにすぎません(Django関連しない)341個のテストがあります。 Djangoを使用します。これは、前述のエラーを初期化してスローすることはありません。

私が説明してきたことを願っています

28
Maximas

PyCharm Proを使用している場合は、アクション「Run Django Console ...」でアプリをテストできます。「test」をクリックすると、アプリの入力を求められますテスト。

enter image description here

または

実行/デバッグ構成でDjangoテストを作成します。

enter image description here

8
yehe

これを使って

import os

os.environ['Django_SETTINGS_MODULE'] = 'mysite.settings'

の代わりに

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.settings")
32
Vishal Sharma

pythonスクリプトで、環境を設定する前にDjangoモデルにアクセスしようとしています:

os.environ.setdefault("Django_SETTINGS_MODULE", "<appname>.`settings`")
from <appname>.models import Class1, Class2,...
10
Hijane

すべてのファイルにこれを追加したくないので、usercustomize.pyというファイルを作成し、このコンテンツを追加しました。

import os
os.environ['Django_SETTINGS_MODULE']='foosite.settings'

私の場合のファイルパス:

src/foosite/usercustomize.py

「pip install -e」でfoositeをインストールしました。これが通常のインストールで機能するかどうかはわかりません。

2
guettli

私の場合、私は使用する必要がありました

python3 manage.py check --deploy

の代わりに

Django-admin check --deploy
1
Samer s Salib

PyCharmを使用している場合、ここでデバッグ構成を選択するのを忘れている可能性があります。

PyCharm Screenshot

0
Josh

Unittest2からTestCaseをインポートすると、このエラーが発生しました。 TestCaseをインポートして修正しました:

from Django.test import TestCase

テストに「Test」ではなく「Unittest」というラベルが付けられたときに、私の疑念が生じました。 Pycharmがこの変更を行ったことに気付く前に、スイート全体を実行する必要がありました...

0
Steve Bradshaw

enter image description here

「作業ディレクトリ」に作業パスを正しく入力し、その場所にコピーを書き留めます

0
safe89