Python / Django / WSGI / Apache - "ImportError: nessun modulo denominato site"


8

Sto cercando di utilizzare un'applicazione Django sul mio computer Ubuntu locale. Tuttavia il sito non funziona e il mio /var/log/apache2/errors.logè pieno di messaggi come questo:

ImportError: No module named site

Il mio /var/log/apache2/error.log(per oggi) è simile al seguente:

$ 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

Questo è l'avviso che si è avviato quando ho acceso la mia macchina, seguito da 12.966 righe che recavano il no module named sitemessaggio

notare la mancanza di un campo datetime. Questi errori si ripetono anche quando non si accede al sito Web (ovvero anche quando non si effettuano richieste Web). Quando si accede al sito Web in un browser, si blocca, come se stesse aspettando un download di grandi dimensioni.

impostazioni

Moduli Apache

Sto usando un virtualenv python 2.5 con molti pacchetti (incl. Django 1.1) installati con pip. Ho caricato 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

Uso "tix" come nome di dominio impostato su localhost in /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Config Apache

Ecco la mia configurazione di Apache (puoi vedere alcuni tentativi per farlo funzionare, linee commentate ecc.) :

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

caricatore wsgi

Ecco il mio loader.wsgi:

Avevo import sitein questo file, che pensavo potesse aver causato il problema, ma l'ho rimosso e gli errori continuano a presentarsi.

# 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='operator@example.com', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log',  show_exceptions_in_wsgi_errors=False)

Questa configurazione funzionava bene su Ubuntu 10.10, ma da quando ho eseguito l'aggiornamento a Ubuntu 11.04, ho riscontrato gli errori sopra.

Risposte:


6

Il tuo mod_wsgi è stato compilato per Python 2.7. Non è quindi possibile provare a indicarlo in un ambiente virtuale Python 2.5.

Inoltre, l'impostazione:

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

indica la cosa sbagliata anche se si trattava di un ambiente virtuale Python 2.7.

Le impostazioni:

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

non farà nulla e non saprà da dove hai avuto l'idea di poterlo fare.

FWIW, la documentazione di mod_wsgi su ambienti virtuali è disponibile all'indirizzo:

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

Questo non ti aiuterà, perché all'inizio sembra che tu abbia un problema più basilare con le tue installazioni mod_wsgi e Python. Il problema potrebbe essere una variante di:

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

Dove hai preso il mod_wsgi.so che stai usando?

Dove è installato Python 2.7?

Quali altre versioni di Python hai installato e dove?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.