【问题标题】:django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configureddjango.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置
【发布时间】:2018-05-21 20:56:18
【问题描述】:

我想将 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': '',
        }
     }

【问题讨论】:

    标签: python django mysql-python


    【解决方案1】:

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

    export DJANGO_SETTINGS_MODULE=mysite.settings
    

    这是相关的docs 条目:

    当你使用 Django 时,你必须告诉它你正在使用哪些设置。 通过使用环境变量 DJANGO_SETTINGS_MODULE 来执行此操作。

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

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

    【讨论】:

    • 您好,感谢您的评论。我只是一个菜鸟,我总是使用virtualenv,现在我收到以下错误..
    • ModuleNotFoundError: No module named 'couzinz' -------------- 但是我添加了“import sys sys.path.append(”/Users/../我的网站")"
    • @reno_libiii 请接受一个答案,因为这个问题已得到回答,并为给你一个很好的提示的答案投票。您的评论引入了另一个新问题的需求,您可以在其中粘贴完整的错误消息。
    • 如果您只是查询数据库怎么办?除了我正在查询的 REST 之外,我没有“我的网站”
    • @BrianWiley "mysite" 实际上是 &lt;project_name&gt;。目录结构为&lt;project_name&gt;/&lt;project_name&gt;/settings.py。这在 python 中应该导出为:project_name.settings,因为./manage.py 位于第一个&lt;project_name&gt; 之下。
    【解决方案2】:

    我也遇到过,刚刚发现是无意的。

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

    所以请检查顶部 pycharm 的 ide 中的“配置”,也许你会犯同样的错误 :)

    我是 django 的新手,所以如果我的回答很愚蠢,请保持冷静。

    【讨论】:

      【解决方案3】:

      我遇到了这个问题,因为我在键入后尝试导入 django 脚本

      python
      

      而不是

      python manage.py shell
      

      呃!

      【讨论】:

      • 是的,我的大脑也出了问题,我在想这是更复杂的事情。感谢您指出这一点!
      • 谢谢,我花了太长时间在这上面绞尽脑汁。我使用django-admin makemigrations users 而不是python manage.py makemigrations users
      【解决方案4】:

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

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

      【讨论】:

      • 这不会解决 OP 问题,因为 django-admin 脚本没有“找到”设置文件
      【解决方案5】:

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

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

      它也可以运行 Django shell:

      python3 manage.py shell
      

      【讨论】:

        【解决方案6】:

        问题

        我在运行 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添加到环境变量中以解决项目设置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()
        

        【讨论】:

          【解决方案7】:

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

          或者使用 django-admin commandsettings 参数:

          django-admin --settings=mysite.settings dbshell
          

          【讨论】:

          • 现在我收到一个错误,因为 ModuleNotFoundError: No module named 'mysite'
          • 您需要将mysite 替换为设置文件所在的项目/文件夹的名称:)!也许是djangoworks从你的帖子里看!?
          • 解释器接受的命令应该类似于django-admin dbshell --settings mysite.settings,请参阅链接:linkdjango-admin 命令和$ django-admin help dbshell
          【解决方案8】:

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

          set DJANGO_SETTINGS_MODULE=mysite.settings
          

          【讨论】:

            猜你喜欢
            • 2018-05-17
            • 2020-04-12
            • 2015-04-16
            • 2021-08-07
            • 1970-01-01
            • 2020-08-25
            • 2021-10-04
            • 2014-07-23
            • 2020-09-27
            相关资源
            最近更新 更多