【问题标题】:from django.db import connection giving error in django1.4从 django.db 导入连接在 django1.4 中出现错误
【发布时间】:2012-09-14 18:30:06
【问题描述】:

我正在尝试使用命令连接到数据库

from django.db import connection 

来自 python 外壳 但这产生了以下导入错误

File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 11, in <module>
    if DEFAULT_DB_ALIAS not in settings.DATABASES:
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

我正在使用 Django 1.4 和 PostgreSQL 当我使用早期版本的 django 时,成功执行了相同的命令 请帮忙。

【问题讨论】:

    标签: python django postgresql importerror django-settings


    【解决方案1】:

    您需要为 DJANGO_SETTINGS_MODULE 设置操作系统环境值。你可以用一个简单的 EXPORT 命令来做到这一点。如果您使用的是 virtualenv,我强烈推荐 virtualenvwrapper,我将此设置放在“bin/postactivate”文件中。

    注意:我刚刚通过 django 1.4 shell 对其进行了测试,导入对我来说效果很好。

    【讨论】:

      【解决方案2】:

      您的 manage.py 文件定义了 DJANGO_SETTINGS_MODULE。由于您在 django 应用程序之外运行此代码,因此您需要自己定义它。

      import os
      os.environ.setdefault("DJANGO_SETTINGS_MODULE", <location of settings.py>)
      

      【讨论】:

      • 我的 manage.py 文件已经包含在我的 settings.py 上的正确位置
      • 是的,我就是这么说的。当你在一个基本的 python shell 中时,你永远不会在 manage.py 中运行设置 DJANGO_SETTINGS_MODULE 的行。因此,在这种情况下,您无法使用它。
      【解决方案3】:

      你必须设置环境变量DJANGO_SETTINGS_MODULE。最简单的方法是将以下代码放在包含失败的导入语句的文件的顶部:

      import os
      os.environ['DJANGO_SETTINGS_MODULE'] = 'path/to/your/settings.py'
      # ...
      from django.db import connection
      

      【讨论】:

      • 我正在尝试通过终端上的 python shell 执行“从 django.db 导入连接”,请指导我在这种情况下我必须做什么。
      • 您是否在 Django 项目中使用 Django shell (python manage.py shell)?我认为你没有。如果您使用 Django shell,所有必要的环境变量都会自动设置,因此您不必关心它。
      • 实际上我使用的是我的 django 项目中的 Django shell。该命令在以前的 django 版本中运行没有问题,它在 django 1.4 中创建了问题
      • 这很奇怪,对我来说它在 Django 1.4 上工作得很好。但我正在使用 SQlite。由于您失败的导入语句似乎调用了您的数据库,因此可能是 PostgreSQL 的问题。如果是这种情况,我无法帮助您(没有使用 PostgreSQL 的经验)。
      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2019-05-13
      相关资源
      最近更新 更多