我遇到的问题是我的 wsgi 文件无法正确导入 wsgi 处理程序。
/var/log/apache2/error.log
报告:
ImportError:没有名为 django.core.handlers.wsgi 的模块
谷歌搜索这带来了几个结果,主要是处理权限错误,因为www-data
无法读取某些文件和/或 pythonpath 不正确。有些解决方案含糊不清,或者在我的情况下不起作用。
背景资料..
我的 /usr/lib 目录..
/usr/lib/python2.4
/usr/lib/python2.5
/usr/lib/python2.6
/usr/lib/python-django
默认的 python 版本是 2.5.2。如果我以普通用户身份打开解释器,我可以import django.core.handlers.wsgi
毫无问题。
如果我切换到www-data
python版本也是一样的,我可以导入django.core.handlers.wsgi
模块没问题。
在我的 bashrc 中,我将 PYTHONPATH 设置为包含我所有 django 站点的主目录...
export PYTHONPATH=/home/meder/django-sites/:$PYTHONPATH
所以目录结构是:
django-sites/
test
test
是创建的目录django-admin createproject
。
我的虚拟主机:
<VirtualHost *:80>
ServerName beta.blah.com
WSGIScriptAlias / /home/meder/django-sites/test/apache/django.wsgi
Alias /media /home/meder/django-sites/test/media/
</VirtualHost>
/home/meder/django-sites/test/apache/django.wsgi
文件本身:
import os, sys
sys.path.append('/usr/local/django')
sys.path.append('/home/meder/django-sites')
sys.path.append('/home/meder/django-sites/test')
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
最后,我的操作系统是 Debian Lenny,我从 backports 中获取了 django 1.1.1。希望这是足够的信息。
更新 #1 - 根据第一个回复,结果如下ldd /usr/lib/apache2/modules/mod_wsgi.so
:
meder@site:/usr/lib/apache2/modules$ ldd mod_wsgi.so
libpython2.5.so.1.0 => /usr/lib/libpython2.5.so.1.0 (0xb7d99000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7d81000)
libdl.so.2 => /lib/libdl.so.2 (0xb7d7c000)
libutil.so.1 => /lib/libutil.so.1 (0xb7d78000)
libm.so.6 => /lib/libm.so.6 (0xb7d52000)
libc.so.6 => /lib/libc.so.6 (0xb7c14000)
/lib/ld-linux.so.2 (0xb7efd000)
所以它是针对 python 2.5 而不是 2.4 编译的。