web-dev-qa-db-fra.com

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

J'essaie d'utiliser un Django application sur ma machine Ubuntu locale. Cependant, le site ne fonctionne pas et mon /var/log/Apache2/errors.log est 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 en disant que le no module named site message

notez l'absence de champ DateTime. Ces erreurs sont répétées même lorsque vous n'allez pas sur le site Web (c'est-à-dire même lorsque vous ne faites pas de demandes Web). Lorsque vous allez sur le site Web dans un navigateur, cela se bloque, comme si vous attendez un grand téléchargement.

Paramètres

Modules Apache

J'utilise un python 2.5 Virtualenv avec beaucoup de paquets (incl. Django 1.1) installé avec PIP. J'ai mod_wsgi chargé:

$ 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 in /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Apache config

Voici ma configuration Apache (vous pouvez voir certaines tentatives pour le faire fonctionner, les 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 import site Dans ce fichier, que je pensais avoir causé le problème, mais je l'ai supprimé et les erreurs continuent à venir.

# 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 utilisée pour fonctionner correctement sur Ubuntu 10.10, mais depuis que j'ai mis à niveau vers Ubuntu 11.04, je reçois les erreurs ci-dessus.

8
Rory

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

En outre, le cadre:

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

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

Les paramètres:

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

ne ferez rien et ne sait pas où vous avez eu l'idée que vous puissiez faire cela.

FWIW, la documentation mod_wsgi sur les environnements virtuels peut être trouvée à l'adresse suivante:

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

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

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

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

Où est le Python 2.7 installé?

Quels autres Python versions avez-vous installé et où?

6
Graham Dumpleton