django.core.exceptions.ImproperlyConfigured: 请求设置 USE_I18N,但未配置设置
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured
我想将 MySQL 数据库连接到我的 django 项目,但它抛出了一个错误:
"django.core.exceptions.ImproperlyConfigured: Requested setting
USE_I18N, but settings are not configured. You must either define the
environment variable DJANGO_SETTINGS_MODULE or call
settings.configure() before accessing settings."
跟踪:
(myenv) LIBINGLADWINs-MacBook-Air:libinrenold$ django-admin dbshell
Traceback (most recent call last):
File "/Users/libinrenold/Desktop/djangoworks/myenv/bin/django-admin", line 11, in <module>
sys.exit(execute_from_command_line())
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 322, in execute
saved_locale = translation.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 195, in get_language
return _trans.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 59, in __getattr__
if settings.USE_I18N:
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 39, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
settings.py。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'user',
'PASSWORD': 'root',
'HOST':'',
'PORT': '',
}
}
您必须定义相关变量以显示您的 settings.py
文件所在的位置:
export DJANGO_SETTINGS_MODULE=mysite.settings
这是相关的 docs 条目:
When you use Django, you have to tell it which settings you’re using.
Do this by using an environment variable, DJANGO_SETTINGS_MODULE.
The value of DJANGO_SETTINGS_MODULE should be in Python path syntax,
e.g. mysite.settings. Note that the settings module should be on the
Python import search path.
如果您使用的是 virtualenv(最佳做法),您可以将相关的 export
命令粘贴到文件 <path-to-virtualenv>/bin/activate
中
把它放在 settings.py 的顶部
这将为您配置 django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()
就像 raratiru 回答的那样,您需要 DJANGO_SETTINGS_MODULE
环境变量定义为您的设置文件的相对 pythonic 路径。
或将您的 django-admin
command 与 settings
参数一起使用:
django-admin --settings=mysite.settings dbshell
我也遇到了,我现在才发现是无意的。
我在 PyCharm IDE 的顶部更改了 "configuration" 所以 pycharm 在尝试 运行 django 代码时感到困惑。当我尝试使用快捷方式 运行 服务器但是当我使用终端到 运行 服务器时,问题弹出窗口,我发现 django 代码没有任何问题并且 pycharm 找不到设置。
所以请检查顶部 pycharm 中的 "configuration" ide 也许你也犯了同样的错误:)
我是 django 的新手,所以如果我的回答很愚蠢,请保持冷静。
我在尝试 运行 服务器时遇到了与 Django 3.0.8(2020 年 7 月)相同的错误,在我的情况下不需要 DJANGO_SETTINGS_MODULE 环境变量。解决方案是使用另一种形式 运行 服务器:
cd <directory containing manage.py>
python3 manage.py runserver
它也适用于 运行 Django shell :
python3 manage.py shell
问题
当我 运行 单元测试时,我对 Django==3.2 和 djangorestframework==3.12.4 (2021/04) 有同样的错误。在我的例子中,python manage.py test
工作正常,但我不能直接 运行 或调试特定应用程序中的测试模块,我得到这个错误:
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 项目根添加到 sys.path
。然后我在环境变量中添加了DJANGO_SETTINGS_MODULE
来解决项目设置root并调用了Django的setup
函数。这是我的代码:
from os import path, environ
from sys import path as sys_path
from django import setup
sys_path.append(<path to django setting.py>)
environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_project.settings')
setup()
我遇到这个问题是因为我试图在键入后导入一个 django 脚本
python
而不是
python manage.py shell
呃!
终端中的以下代码手动通知我正在使用的设置对我有用:
set DJANGO_SETTINGS_MODULE=mysite.settings
我想将 MySQL 数据库连接到我的 django 项目,但它抛出了一个错误:
"django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings."
跟踪:
(myenv) LIBINGLADWINs-MacBook-Air:libinrenold$ django-admin dbshell
Traceback (most recent call last):
File "/Users/libinrenold/Desktop/djangoworks/myenv/bin/django-admin", line 11, in <module>
sys.exit(execute_from_command_line())
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/core/management/base.py", line 322, in execute
saved_locale = translation.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 195, in get_language
return _trans.get_language()
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/utils/translation/__init__.py", line 59, in __getattr__
if settings.USE_I18N:
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/Users/libinrenold/Desktop/djangoworks/myenv/lib/python3.6/site-packages/django/conf/__init__.py", line 39, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
settings.py。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'user',
'PASSWORD': 'root',
'HOST':'',
'PORT': '',
}
}
您必须定义相关变量以显示您的 settings.py
文件所在的位置:
export DJANGO_SETTINGS_MODULE=mysite.settings
这是相关的 docs 条目:
When you use Django, you have to tell it which settings you’re using. Do this by using an environment variable, DJANGO_SETTINGS_MODULE.
The value of DJANGO_SETTINGS_MODULE should be in Python path syntax, e.g. mysite.settings. Note that the settings module should be on the Python import search path.
如果您使用的是 virtualenv(最佳做法),您可以将相关的 export
命令粘贴到文件 <path-to-virtualenv>/bin/activate
把它放在 settings.py 的顶部 这将为您配置 django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()
就像 raratiru 回答的那样,您需要 DJANGO_SETTINGS_MODULE
环境变量定义为您的设置文件的相对 pythonic 路径。
或将您的 django-admin
command 与 settings
参数一起使用:
django-admin --settings=mysite.settings dbshell
我也遇到了,我现在才发现是无意的。
我在 PyCharm IDE 的顶部更改了 "configuration" 所以 pycharm 在尝试 运行 django 代码时感到困惑。当我尝试使用快捷方式 运行 服务器但是当我使用终端到 运行 服务器时,问题弹出窗口,我发现 django 代码没有任何问题并且 pycharm 找不到设置。
所以请检查顶部 pycharm 中的 "configuration" ide 也许你也犯了同样的错误:)
我是 django 的新手,所以如果我的回答很愚蠢,请保持冷静。
我在尝试 运行 服务器时遇到了与 Django 3.0.8(2020 年 7 月)相同的错误,在我的情况下不需要 DJANGO_SETTINGS_MODULE 环境变量。解决方案是使用另一种形式 运行 服务器:
cd <directory containing manage.py>
python3 manage.py runserver
它也适用于 运行 Django shell :
python3 manage.py shell
问题
当我 运行 单元测试时,我对 Django==3.2 和 djangorestframework==3.12.4 (2021/04) 有同样的错误。在我的例子中,python manage.py test
工作正常,但我不能直接 运行 或调试特定应用程序中的测试模块,我得到这个错误:
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 项目根添加到 sys.path
。然后我在环境变量中添加了DJANGO_SETTINGS_MODULE
来解决项目设置root并调用了Django的setup
函数。这是我的代码:
from os import path, environ
from sys import path as sys_path
from django import setup
sys_path.append(<path to django setting.py>)
environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_project.settings')
setup()
我遇到这个问题是因为我试图在键入后导入一个 django 脚本
python
而不是
python manage.py shell
呃!
终端中的以下代码手动通知我正在使用的设置对我有用:
set DJANGO_SETTINGS_MODULE=mysite.settings