django.core.exceptions.ImproperlyConfigured:请求设置 CACHES,但未配置设置。您必须定义环境变量
Posted
技术标签:
【中文标题】django.core.exceptions.ImproperlyConfigured:请求设置 CACHES,但未配置设置。您必须定义环境变量【英文标题】:django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment varia 【发布时间】:2014-07-23 13:38:11 【问题描述】:我已经尝试了所有能找到的方法来解决这个问题,但现在我的头发开始掉了一点。 我收到此错误:
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 和 shell 中运行测试。 在我使用的外壳中:
python3 manage.py test
shell 没有找到任何测试。测试是基本的,我目前并不关心它的内容,因为这是我正在努力解决的环境。 更新:我已经解决了 shell 的问题。测试必须由以下人员定义:
def test_<name>():
但这并没有解决我的 PyCharm 问题。 我也打过电话:
settings.configure()
告诉我它已经配置好了。 请注意,我不在 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 存储在 root 下。
编辑:我刚刚发现我的不使用 Django 的测试运行良好,但 Pycharm 仍然出现了几次失败。这些失败不是单独的测试,它们只是我在这里提到的错误(有 341 个测试与 Django 无关)。我只有一个使用 Django 的测试,它不会通过初始化并抛出上述错误。
希望我一直在解释
【问题讨论】:
以sudo
的身份运行是答案 - 当问题是“我怎样才能弄乱我的主文件夹的权限”时。
【参考方案1】:
使用这个
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
而不是
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<appname>.settings")
【讨论】:
【参考方案2】:在您的 python 脚本中,您尝试在设置环境之前访问 Django 模型,请按以下顺序尝试:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<appname>.`settings`")
from <appname>.models import Class1, Class2,...
【讨论】:
【参考方案3】:如果您使用的是 PyCharm Pro,您可以通过操作“运行 Django 控制台...”来测试您的应用程序。单击“测试”后,它会提示您输入要测试的应用程序。
或
在运行/调试配置中创建一个 Django 测试。
【讨论】:
【参考方案4】:因为我不想在每个文件中都添加这个,所以我创建了 一个名为 usercustomize.py 的文件并添加了以下内容:
import os
os.environ['DJANGO_SETTINGS_MODULE']='foosite.settings'
我的文件路径:
src/foosite/usercustomize.py
我使用“pip install -e”安装了 foosite。我不确定这是否适用于正常安装。
【讨论】:
哇哇哇哇哇哇哇哇哇哇哇哇哇???请制作和示例,所以,你把它放在一个文件下,每次需要时都导入它?你把那个文件放在哪里了?什么目录?你是怎么安装的? 我更新了我的答案。我们现在使用usercustomize.py
,因为一些Linux 发行版有自己的sitecustomize.py。您可以将此文件放在 sys.path 上的任何位置。你问我是如何安装它的:我安装它是可编辑的。这意味着在 ~/src/.【参考方案5】:
就我而言,我需要使用
python3 manage.py check --deploy
而不是
django-admin check --deploy
【讨论】:
【参考方案6】:用您的工作路径正确填写“工作目录” 然后在原处写下副本
【讨论】:
【参考方案7】:从 unittest2 导入 TestCase 时出现此错误。我通过以下方式导入 TestCase 来修复它:
from django.test import TestCase
当测试被标记为“Unittest”而不是“Test”时,我产生了怀疑。在 Pycharm 意识到我做了这个改变之前,我必须运行整个套件......
【讨论】:
【参考方案8】:如果您使用的是 PyCharm,您可能忘记在此处选择您的调试配置:
【讨论】:
以上是关于django.core.exceptions.ImproperlyConfigured:请求设置 CACHES,但未配置设置。您必须定义环境变量的主要内容,如果未能解决你的问题,请参考以下文章