django.core.exceptions.ImproperlyConfigured:请求设置USE_I18N,但未配置设置

时间:2017-12-07 17:15:09

标签: python django mysql-python

我想将MySQL数据库连接到我的django项目,但它引发了一个错误:

  

" django.core.exceptions.ImproperlyConfigured:请求的设置   USE_I18N,但未配置设置。您必须定义   环境变量DJANGO_SETTINGS_MODULE或致电   在访问设置之前的settings.configure()。"

追踪:

 (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': '',
        }
     }

8 个答案:

答案 0 :(得分:7)

您必须定义相关变量以显示settings.py文件所在的位置:

export DJANGO_SETTINGS_MODULE=mysite.settings

这是相关的docs条目:

  

当您使用Django时,您必须告诉它您正在使用哪些设置。   通过使用环境变量DJANGO_SETTINGS_MODULE。

来完成此操作      

DJANGO_SETTINGS_MODULE的值应该是Python路径语法,   例如mysite.settings。请注意,设置模块应该在   Python导入搜索路径。

如果您使用virtualenv(这是最佳做法),则可以将相关的export命令粘贴到文件<path-to-virtualenv>/bin/activate

答案 1 :(得分:3)

将它放在settings.py的顶部 这将为你配置django

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", __file__)
import django
django.setup()

答案 2 :(得分:1)

就像raratiru回答的那样,您需要使用设置文件的相对pythonic路径定义DJANGO_SETTINGS_MODULE环境变量。

或将django-admin commandsettings参数一起使用:

django-admin --settings=mysite.settings dbshell

答案 3 :(得分:1)

在尝试运行服务器时,我与Django 3.0.8(2020年7月)存在相同的错误,在我的情况下,不需要DJANGO_SETTINGS_MODULE环境变量。解决方案是使用另一种形式来运行服务器:

cd <directory containing manage.py>
python3 manage.py runserver

它也可以运行Django shell:

python3 manage.py shell

答案 4 :(得分:1)

问题

当我运行 unittest 时,我在 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 添加到环境变量以解决项目设置根并调用 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()

答案 5 :(得分:0)

这也发生在我身上,我刚才发现是无意的。

我在PyCharm IDE顶部更改了“配置”,因此pycharm在尝试运行Django代码时感到困惑。当我尝试使用快捷方式运行服务器时确实出现了问题弹出窗口,但是当我使用终端运行服务器时,我发现Django代码没有任何问题,并且pycharm找不到设置。

所以请检查pycharm的最佳配置中的“配置”,也许您也犯了同样的错误:)

我是django的新人,所以如果我的回答很傻,请保持冷静。

configuration picture

答案 6 :(得分:0)

我遇到这个问题是因为我在输入后尝试导入 django 脚本

python

代替

python manage.py shell

呸!

答案 7 :(得分:0)

终端中的以下代码可手动通知我正在使用的设置对我有用:

set DJANGO_SETTINGS_MODULE=mysite.settings