Python / Django / WSGI / Apache - "ImportError: ningún módulo llamado sitio"

8

Estoy tratando de usar una aplicación django en mi máquina ubuntu local. Sin embargo, el sitio no funciona y mi /var/log/apache2/errors.logestá lleno de mensajes como este:

ImportError: No module named site

Mi /var/log/apache2/error.log(por hoy) se ve así:

$ 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

Ese es el aviso de que comenzó cuando encendí mi máquina, seguido de 12,966 líneas que decían el no module named sitemensaje

tenga en cuenta la falta de un campo de fecha y hora. Estos errores se repiten incluso cuando no se va al sitio web (es decir, incluso cuando no se realizan solicitudes web). Cuando va al sitio web en un navegador, simplemente se cuelga, como si esperara una descarga grande.

Configuraciones

Módulos Apache

Estoy usando un python 2.5 virtualenv con muchos paquetes (incluido django 1.1) instalados con pip. Tengo mod_wsgi cargado:

$ 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

Yo uso "tix" como un nombre de dominio que se establece en localhost en /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Configuración de Apache

Aquí está mi configuración de apache (puede ver algunos intentos para que funcione, líneas 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>

cargador wsgi

Aquí está mi loader.wsgi:

Solía ​​tener import siteen este archivo, que pensé que podría haber causado el problema, pero lo eliminé y los errores siguen apareciendo.

# 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 configuración solía funcionar bien en Ubuntu 10.10, pero desde que actualicé a Ubuntu 11.04, obtengo los errores anteriores.

Rory
fuente

Respuestas:

6

Su mod_wsgi fue compilado para Python 2.7. Entonces no puede intentar apuntarlo a un entorno virtual Python 2.5.

Además, la configuración:

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

apunta a lo incorrecto incluso si se tratara de un entorno virtual Python 2.7.

La configuración:

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

tampoco hará nada y no sé de dónde sacaste la idea de que podrías hacer eso.

FWIW, la documentación de mod_wsgi sobre entornos virtuales se puede encontrar en:

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

Sin embargo, esto no te ayudará porque, para empezar, parece que tienes un problema más básico con tus instalaciones mod_wsgi y Python. El problema es potencialmente una variante de:

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

¿De dónde sacaste el mod_wsgi.so estás usando?

¿Dónde está instalado Python 2.7?

¿Qué otras versiones de Python tiene instaladas y dónde?

Graham Dumpleton
fuente