Python / Django / WSGI / Apache - «ImportError: ни один модуль не назвал сайт»

8

Я пытаюсь использовать приложение django на моей локальной машине с Ubuntu. Однако сайт не работает, и мой /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сообщение

обратите внимание на отсутствие поля datetime. Эти ошибки повторяются даже тогда, когда вы не заходите на сайт (то есть даже когда не делаете веб-запросы). При переходе на сайт в браузере он просто зависает, как будто ждет большой загрузки.

настройки

Модули Apache

Я использую python 2.5 virtualenv с множеством пакетов (включая django 1.1), установленных с помощью pip. Я загрузил 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, я получаю ошибки выше.

Рори
источник

Ответы:

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/en/develop/user-guides/installation-issues.html#multiple-python-versions

Где вы взяли mod_wsgi.so, который вы используете?

Где установлен Python 2.7?

Какие еще версии Python у вас установлены и где?

Грэм Дамплтон
источник