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

kwvwclae  于 2022-12-02  发布在  Python
关注(0)|答案(9)|浏览(231)

我想连接MySQL数据库到我的django项目,但它抛出了一个错误:
“django.core.exceptions.配置不正确:已请求设置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.

设置.py.

DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'user',
        'PASSWORD': 'root',
        'HOST':'',
        'PORT': '',
        }
     }
8xiog9wr

8xiog9wr1#

您必须定义相关的变数,以显示settings.py档案所在的位置:

export DJANGO_SETTINGS_MODULE=mysite.settings

这是相关的文档条目:
当你使用Django的时候,你必须告诉它你使用的是什么设置,这可以通过使用一个环境变量DJANGO_SETTINGS_MODULE来实现。
DJANGO_SETTINGS_MODULE的值应该使用Python路径语法,例如mysite.settings。请注意,设置模块应该位于Python导入搜索路径上。
如果您使用的是virtualenv(这是最佳做法),则可以将相关的export命令粘贴到文件<path-to-virtualenv>/bin/activate

z6psavjg

z6psavjg2#

这件事也发生在我身上,我只是现在无意中发现的。
我在PyCharm IDE的顶部更改了“配置”,所以pycharm在尝试运行django代码时感到困惑。当我尝试使用快捷方式运行服务器时,问题确实出现了,但当我使用终端运行服务器时,我发现django代码没有任何问题,并且pycharm找不到设置。
所以,请检查顶部pycharm的ide中的“配置”,也许你也会犯同样的错误:)
我是新来的,所以如果我的回答是愚蠢的,请冷静。

lnvxswe2

lnvxswe23#

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

python

代替

python manage.py shell

废话!

gg0vcinb

gg0vcinb4#

问题

当我运行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()
ttygqcqt

ttygqcqt5#

把这个放在www.example.com上面settings.py这将为你配置django

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

jslywgbw6#

我在Django 3.0.8(2020年7月)运行服务器时也遇到了同样的错误,在我的例子中不需要DJANGO_SETTINGS_MODULE环境变量。解决方案是使用另一种形式来运行服务器:

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

它也可以运行Django shell:

python3 manage.py shell
ctehm74n

ctehm74n7#

就像raratiru回答的那样,您需要使用设置文件的相对Python路径定义DJANGO_SETTINGS_MODULE环境变量。
或者使用带有settings参数的django-admin命令:

django-admin --settings=mysite.settings dbshell
z9gpfhce

z9gpfhce8#

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

set DJANGO_SETTINGS_MODULE=mysite.settings
llmtgqce

llmtgqce9#

亲爱的所有人,我面临着同样的问题,我放弃了网络来寻找解决方案。上面的任何一个都没有解决任何问题。
在我的情况下,这个问题与pycharm的错误配置有关。至于上面的某个人,应用程序从命令行/ shell启动时没有任何问题。
问题就在这里:

由于某种原因,env变量消失了。我加了回去,一切又开始工作了,没有任何问题。

相关问题