Python / Django / WSGI / Apache-“ ImportError:没有名为站点的模块”


8

我正在尝试在本地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消息

请注意缺少日期时间字段。即使不访问网站(即即使不提出Web请求),也会重复出现这些错误。在浏览器中访问网站时,它挂起,好像在等待大量下载。

设定值

Apache模块

我正在使用python 2.5 virtualenv,其中包含许多通过pip安装的软件包(包括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”作为在以下位置设置为localhost的域名 /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Apache配置

这是我的apache配置(您可以看到一些使其工作的尝试,注释行等)

# 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='operator@example.com', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log',  show_exceptions_in_wsgi_errors=False)

此配置曾经在Ubuntu 10.10上可以正常工作,但是由于我升级到Ubuntu 11.04,因此出现了以上错误。

Answers:


6

您的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文档可在以下位置找到:

https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html

不过,这不会帮到您,因为您似乎在开始时对mod_wsgi和Python安装有一个更基本的问题。该问题可能是以下情况的变体:

https://modwsgi.readthedocs.io/zh-CN/develop/user-guides/installation-issues.html#multiple-python-versions

您从哪里获得的mod_wsgi.so?

Python 2.7安装在哪里?

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.