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

8

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

ImportError: No module named site

Meu /var/log/apache2/error.log (por hoje) é 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 que começou quando liguei minha máquina, seguido por 12.966 linhas, todas dizendo a no module named site message

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 está fazendo solicitações da Web). Ao acessar o site em um navegador, ele simplesmente trava, como se estivesse esperando por um download grande.

Configurações

Módulos Apache

Estou usando um virtualenv python 2.5 com muitos pacotes (incl. django 1.1) instalados 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 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 para 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>

loader wsgi

Aqui está o meu loader.wsgi:

Eu costumava ter import site neste arquivo, o que pensei que poderia 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)

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

    
por Rory 29.06.2011 / 11:54

1 resposta

6

Seu mod_wsgi foi compilado para o Python 2.7. Você não pode tentar apontá-lo em um ambiente virtual do 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 do 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 ideia que você poderia fazer.

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

link

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

link

De onde você tirou o mod_wsgi.so que você está usando?

Onde o Python 2.7 está instalado?

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

    
por 29.06.2011 / 12:29