Python / Django / WSGI / Apache - “ImportError: nenhum módulo chamado site”

8

Estou tentando usar um aplicativo django na minha máquina ubuntu local. No entanto, o site não funciona e o meu /var/log/apache2/errors.logé preenchido com mensagens como esta:

ImportError: No module named site

Meu /var/log/apache2/error.log(por hoje) fica assim:

$ 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

Esse é o aviso de que ele foi iniciado quando liguei minha máquina, seguido por 12.966 linhas, todas dizendo a no module named sitemensagem

observe a falta de um campo de data e hora. Esses erros são repetidos mesmo quando você não acessa o site (ou seja, mesmo quando não faz solicitações da Web). Ao acessar o site em um navegador, ele simplesmente trava, como se estivesse esperando por um grande download.

Definições

Módulos Apache

Estou usando um virtualenv python 2.5 com muitos pacotes (incluindo o django 1.1) instalado com o pip. Eu tenho mod_wsgi carregado:

$ 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

Eu uso "tix" como um nome de domínio definido como localhost em /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Configuração do Apache

Aqui está minha configuração do apache (você pode ver algumas tentativas de fazê-lo funcionar, linhas comentadas etc.) :

# 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>

carregador wsgi

Aqui está o meu loader.wsgi:

Eu costumava ter import siteneste arquivo, o que pensei ter causado o problema, mas o removi e os erros continuam aparecendo.

# 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)

Essa configuração costumava funcionar bem no Ubuntu 10.10, mas desde que atualizei para o Ubuntu 11.04, recebo os erros acima.

Rory
fonte

Respostas:

6

Seu mod_wsgi foi compilado para o Python 2.7. Você não pode tentar apontar para um ambiente virtual Python 2.5.

Além disso, a configuração:

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

está apontando para a coisa errada, mesmo que fosse um ambiente virtual Python 2.7.

As configurações:

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

também não fará nada e não sabe de onde você tirou a idéia de fazer isso.

FWIW, a documentação mod_wsgi em ambientes virtuais pode ser encontrada em:

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

Isso não vai ajudá-lo, porque você parece ter um problema mais básico com suas instalações mod_wsgi e Python. O problema é potencialmente uma variante de:

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

Onde você conseguiu o mod_wsgi.so que está usando?

Onde o Python 2.7 está instalado?

Quais outras versões do Python você instalou e onde?

Graham Dumpleton
fonte