django、postgres 8.4、psycopg 2.2.2、python 2.7、mod_wsgi

Posted

技术标签:

【中文标题】django、postgres 8.4、psycopg 2.2.2、python 2.7、mod_wsgi【英文标题】:django, postgres 8.4, psycopg 2.2.2, python 2.7, mod_wsgi 【发布时间】:2011-04-07 16:20:13 【问题描述】:

我已经在本地 django 服务器上安装了 django/postgres 并且工作正常。我正在尝试让 Apache 正常工作。我已经设置了 mod_wsgi 并且能够获得“Hello World”,然后重新启动 Apache。我快到了,但是当我打开 localhost/index.html 时,我得到了这个服务器错误:

TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 
'django.db.backends.postgresql_psycopg2' isn't an available database 
backend. 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1] Try using 
django.db.backends.XXX, where XXX is one of: 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1]     'dummy', 
'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' 
[Thu Sep 02 13:46:30 2010] [error] [client 127.0.0.1] Error was: 
cannot import name utils 

mod_wsgi 和 psycopg 版本可能不兼容吗?有人试过这种设置吗?

更新 1:

我降级到 2.6、mod_wsgi、psycopg2,但仍然在 apache 日志文件中出现此错误。

2010 年 9 月 3 日星期五 12:17:41] [错误] [客户端 97.80.165.181] 文件 "C:\Python26\lib\site-packages\django\db\__init__.py", 第 77 行,在 [Fri Sep 03 2010 年 12 点 17 分 41 秒] [错误] [客户端 97.80.165.181] 连接 = 连接[DEFAULT_DB_ALIAS] [9 月星期五 03 12:17:41 2010] [错误] [客户端 97.80.165.181] 文件“C:\Python26\lib\site-packages\django\db\utils.py”, 第 91 行,在 getitem [9 月 3 日星期五 2010 年 12 点 17 分 41 秒] [错误] [客户端 97.80.165.181] 后端 = load_backend(db['ENGINE']) [9 月 3 日星期五 2010 年 12 点 17 分 41 秒] [错误] [客户端 97.80.165.181] 文件“C:\Python26\lib\site-packages\django\db\utils.py”, 第 49 行,在 load_backend [Fri Sep 03 2010 年 12 点 17 分 41 秒] [错误] [客户端 97.80.165.181] 提出不当配置(error_msg)[星期五 2010 年 9 月 3 日 12:17:41] [错误] [客户端 97.80.165.181] TemplateSyntaxError:在配置不当时捕获 渲染: 'django.db.backends.postgresql_psycopg2' 不是可用的数据库后端。 [2010 年 9 月 3 日星期五 12:17:41] [错误] [客户端 97.80.165.181] 尝试使用 django.db.backends.XXX,其中 XXX 是 其中之一:[2010 年 9 月 3 日星期五 12:17:41] [错误] [客户端 97.80.165.181] '虚拟','mysql','oracle', 'postgresql','postgresql_psycopg2', 'sqlite3' [2010 年 9 月 3 日星期五 12:17:41] [错误] [客户端 97.80.165.181] 错误 是:无法导入名称工具

你知道它可能表示什么吗?

更新 2:

原因在文件 django/db/backends/postgresql_psycopg2/base.py,版本 2.2.2,第 9 行: 从 django.db 导入工具

但我仍然不知道如何解决这个问题。 有一个文件 django/db/utils.py,所以它应该可以工作。毕竟,它适用于开发服务器。但不适用于 Apache + mod_wsgi

【问题讨论】:

从内存来看,这实际上与某个 Window C 运行时 DLL 没有像 Python 那样链接到 Apache 相关。 psycopg2 C 扩展模块中有一些依赖于它的东西,因为它丢失了它失败。虽然被看到的错误是上面的一个晦涩难懂的错误,但它并没有真正指出问题所在。我相信 pyscopg2 的人都知道这个问题。不知道他们会怎么做,但最近在他们的问题跟踪器上有一些关于它的活动。但后来我的记忆可能是错误的,那都是幻想。 如果有人使用 Django 1.4.x 遇到这个问题...尝试升级到最新版本的 Django(在撰写本文时为 1.4.2)。我在 2012 年使用 Django 1.4.1 时遇到了类似的错误。我更新到 Django 1.4.2 并停止收到错误。 【参考方案1】:

也许this Ticket 可以帮助你:

或者不管它值多少钱,我都有 确认如果我降级 python 到 2.6 然后同样降级 mod_wsgi 和 psycopg2,Django 将 在 Apache 上使用 Postgres 作为 预计

【讨论】:

以上是关于django、postgres 8.4、psycopg 2.2.2、python 2.7、mod_wsgi的主要内容,如果未能解决你的问题,请参考以下文章

在 Greenplum(Postgres 8.4)中进行多行更新时跟踪错误记录?

如何在 Webfaction 上已经存在的 postgres 数据库上启用 GeoDjango?

django1.8.4 模型倒序不能工作

寻找 Psyco 的良好替代品(Python->C 编译器)[关闭]

Postgres-为Fedora 14安装和创建数据库和用户

django系列8.4--django中间件的可应用案例, 限制请求次数与时间