0

所以我第一次尝试让 Django 与 mod-wsgi 一起运行。我已经按照示例中所示配置了 Apache,并且我很确定我做的一切都是正确的。

我没有设置PYTHON_EGG_CACHE变量,所以它使用默认值:/var/www/.python-eggs。我已经创建了这个目录并使它对用户可写www-data

当我打开站点时,它会显示500.html模板的输出,这是我在日志中得到的内容:

   ...
   File "/usr/local/.../parts/django/django/db/__init__.py", line 17, in load_backend
     return import_module('.base', 'django.db.backends.%s' % backend_name)
   File "/usr/local/.../parts/django/django/utils/importlib.py", line 35, in import_module
     __import__(name)
   File "/usr/local/.../parts/django/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module>
     raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
 ImproperlyConfigured: Error loading psycopg2 module: cannot import name tz

这就是我所拥有的/var/www/.python-eggs/

# ls -la /var/www/.python-eggs/
total 12
drwxr-xr-x 3 www-data www-data 4096 Jan 27 04:19 .
drwxr-xr-x 5 root     root     4096 Jan 27 04:18 ..
drwxr-xr-x 3 www-data www-data 4096 Jan 27 04:19 psycopg2-2.0.13-py2.5-linux-i686.egg-tmp

# ls -la /var/www/.python-eggs/psycopg2-2.0.13-py2.5-linux-i686.egg-tmp/psycopg2/
total 368
drwxr-xr-x 2 www-data www-data   4096 Jan 27 04:19 .
drwxr-xr-x 3 www-data www-data   4096 Jan 27 04:19 ..
-rwxr-xr-x 1 www-data www-data 363318 Jan 22 03:44 _psycopg.so

psycopg2 egg 目录中唯一的文件是_psycopg.so. 没有tz.py文件,我认为这是问题所在。

请指教。

PS,我使用 buildoutdjangorecipe来部署 Django。buildout我与用户一起运行构建脚本。不确定这是否有意义。

PPS,psycopg2安装正确,因为我能够运行syncdb.

4

2 回答 2

1

Ok, I have found the solution. I have used the system python for buildout and it already had psycopg2 in site-packages. It seems there was some kind of conflict between psycopg2 in system site-packages and the one installed by buildout. I have set up a virtual python environment and used it for buildout. And this helped! No more import errors.

于 2010-02-04T06:55:25.460 回答
0

我建议如果您能够从命令行导入它,那么在路径的某个地方,www-data 用户将被禁止访问 egg 路径。

于 2010-01-28T21:44:26.117 回答