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

2 投票
1 回答
2041 浏览
提问于 2025-04-16 03:39

我在本地的 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 个回答

1

也许这个问题能帮到你:

不管这有什么用,我确认如果我把Python降级到2.6,然后同样降级mod_wsgi和psycopg2,Django就能在Apache上正常使用Postgres了。

撰写回答