Python / Django / WSGI / Apache – “ImportError:No module named site”

我想在我的本地ubuntu机器上使用django应用程序。 然而,该网站不工作,我的/var/log/apache2/errors.log充满了这样的消息:

 ImportError: No module named site 

我的/var/log/apache2/error.log (今天)看起来像这样:

 $ cat error.log | uniq -c 1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations 12966 ImportError: No module named site 

这是通知,它启动时,我打开我的机器,其次是12,966行都说no module named site消息

注意缺lessdate时间字段。 即使不进入网站(即使不进行networking请求),也会重复这些错误。 在浏览器中访问网站时,它只是挂起,仿佛在等待大量下载。

设置

Apache模块

我正在使用一个python 2.5 virtualenv与很多包(包括Django的1.1)与点安装。 我有mod_wsgi加载:

 $ ls -l /etc/apache2/mods-enabled/wsgi* lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.load -> ../mods-available/wsgi.load 

我使用“tix”作为在/etc/hosts设置为localhost的域名

 $ grep tix /etc/hosts 127.0.0.1 tix 

Apacheconfiguration

这里是我的Apacheconfiguration(你可以看到一些尝试,使其工作,评论线等)

 # mod-wsgi enabled virtual host WSGISocketPrefix /home/rory/tix/tix_wsgi/tmp WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/ UnSetEnv PYTHONSTARTUP SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/ #WSGIPythonEggs /home/rory/svn/tix/tmp/python-eggs <VirtualHost 127.0.0.1:80> ServerName tix Alias /media /home/rory/tix/tix/media Alias /selenium /home/rory/tix/tix/tests/selenium <Directory /home/rory/tix/tix/media> SetHandler None Order allow,deny Allow from all </Directory> WSGIDaemonProcess tix user=tix_wsgi group=tix_wsgi processes=4 threads=1 python-path=/home/rory/tix/virtualenv2.5/lib/python2.5/site-packages WSGIScriptAlias / /home/rory/tix/tix/apache/loader.wsgi WSGIProcessGroup tix CustomLog /var/log/apache2/tix_access.log combined ErrorLog /var/log/apache2/tix_error.log <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all </Location> <IfModule rewrite_module> RewriteEngine On RewriteCond %{HTTP_HOST} ^media.tix$ [NC] RewriteRule .? http://tix/media%{REQUEST_URI} [R=301,L] </IfModule> </VirtualHost> 

wsgi装载机

这里是我的loader.wsgi:

我曾经在这个文件中有import site ,我认为这可能是导致这个问题,但我删除它,错误不断出现。

 # loader.wsgi - WSGI adapter for tix django project # The python paste wrapper catches apache 500 errors (Internal Server Errors) and gives debug output # See http://pythonpaste.org/modules/exceptions.html import os import sys os.environ['DJANGO_SETTINGS_MODULE'] = 'tix.settings.base' from paste.exceptions.errormiddleware import ErrorMiddleware import django.core.handlers.wsgi tixette = django.core.handlers.wsgi.WSGIHandler() application = ErrorMiddleware(tixette, debug=True, error_email='[email protected]', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log', show_exceptions_in_wsgi_errors=False) 

这个configuration曾经在Ubuntu 10.10上正常工作,但是由于我升级到了Ubuntu 11.04,所以我得到了上面的错误。

你的mod_wsgi是为Python 2.7编译的。 你不能尝试在Python 2.5虚拟环境中指向它。

另外,设置:

 WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/ 

即使它是一个Python 2.7虚拟环境,也指向了错误的东西。

设置:

 UnSetEnv PYTHONSTARTUP SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/ 

也不会做任何事情,也不知道你有什么想法。

FWIW,关于虚拟环境的mod_wsgi文档可以在以下urlfind:

http://code.google.com/p/modwsgi/wiki/VirtualEnvironments

这不会帮助你,因为你似乎有一个更基本的问题与你的mod_wsgi和Python安装开始。 这个问题可能是以下的一个变种:

http://code.google.com/p/modwsgi/wiki/InstallationIssues#Multiple_Python_Versions

你在哪里得到你正在使用的mod_wsgi.so?

Python 2.7在哪里安装?

您还安装了哪些其他Python版本?