django,postgres 8.4,psycopg 2.2.2,python 2.7,mod_wsgi
我在本地的 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:
我把 mod_wsgi 和 psycopg2 降级到 2.6,还是在 Apache 的日志文件中看到这个错误。
[2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] 文件 "C:\Python26\lib\site-packages\django\db\__init__.py", 第 77 行,在 [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] connection = connections[DEFAULT_DB_ALIAS] [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] 文件 "C:\Python26\lib\site-packages\django\db\utils.py", 第 91 行,在 getitem [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] backend = load_backend(db['ENGINE']) [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] 文件 "C:\Python26\lib\site-packages\django\db\utils.py", 第 49 行,在 load_backend [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] raise ImproperlyConfigured(error_msg) [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] TemplateSyntaxError: 在渲染时捕获到 ImproperlyConfigured: '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]
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3' [2010年9月3日 星期五 12:17:41] [错误] [客户端 97.80.165.181] 错误是:无法导入名称 utils
你知道这可能意味着什么吗?
更新 2:
问题出在文件 django/db/backends/postgresql_psycopg2/base.py,版本 2.2.2,第 9 行: from django.db import utils
但我还是不知道该怎么解决。虽然有一个文件 django/db/utils.py,所以应该可以工作的。而且在开发服务器上是可以的,但在 Apache + mod_wsgi 上却不行。
1 个回答
也许这个问题能帮到你:
不管这有什么用,我确认如果我把Python降级到2.6,然后同样降级mod_wsgi和psycopg2,Django就能在Apache上正常使用Postgres了。