Python / Django / WSGI / Apache - "ImportError: Aucun module nommé site"

8

J'essaie d'utiliser une application django sur ma machine Ubuntu locale. Cependant, le site ne fonctionne pas et mon /var/log/apache2/errors.logest rempli de messages comme celui-ci:

ImportError: No module named site

Mon /var/log/apache2/error.log(pour aujourd'hui) ressemble à ceci:

$ 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

C'est l'avis qu'il a démarré lorsque j'ai allumé ma machine, suivi de 12 966 lignes disant toutes le no module named sitemessage

notez l'absence d'un champ datetime. Ces erreurs se répètent même lorsque vous ne visitez pas le site Web (c'est-à-dire même lorsque vous ne faites pas de demandes Web). Lorsque vous accédez au site Web dans un navigateur, il se bloque simplement, comme si vous attendiez un téléchargement volumineux.

Réglages

Modules Apache

J'utilise un virtualenv python 2.5 avec de nombreux packages (y compris django 1.1) installés avec pip. J'ai chargé 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

J'utilise "tix" comme nom de domaine défini sur localhost dans /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Configuration Apache

Voici ma configuration apache (vous pouvez voir quelques tentatives pour le faire fonctionner, des lignes commentées, 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>

chargeur wsgi

Voici mon loader.wsgi:

J'avais l'habitude d'avoir import sitedans ce fichier, qui je pensais avoir pu causer le problème, mais je l'ai supprimé et les erreurs continuent de se produire.

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

Cette configuration fonctionnait bien sur Ubuntu 10.10, mais depuis que je suis passé à Ubuntu 11.04, je reçois les erreurs ci-dessus.

Rory
la source

Réponses:

6

Votre mod_wsgi a été compilé pour Python 2.7. Vous ne pouvez pas ensuite essayer de le pointer vers un environnement virtuel Python 2.5.

En outre, le paramètre:

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

pointe sur la mauvaise chose même s'il s'agissait d'un environnement virtuel Python 2.7.

Les paramètres:

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

ne fera rien non plus et je ne sais pas d'où vous tenez l'idée.

FWIW, la documentation de mod_wsgi sur les environnements virtuels se trouve sur:

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

Cela ne va pas vous aider car vous semblez avoir un problème plus basique avec vos installations mod_wsgi et Python pour commencer. Le problème étant potentiellement une variante de:

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

Où avez-vous obtenu le mod_wsgi.so que vous utilisez?

Où est installé Python 2.7?

Quelles autres versions de Python avez-vous installées et où?

Graham Dumpleton
la source