Python / Django / WSGI / Apache - "ImportError: Kein Modul mit dem Namen site"

8

Ich versuche, eine Django-Anwendung auf meinem lokalen Ubuntu-Computer zu verwenden. Die Seite funktioniert jedoch nicht und meine /var/log/apache2/errors.logist mit folgenden Nachrichten gefüllt:

ImportError: No module named site

Mein /var/log/apache2/error.log(für heute) sieht so aus:

$ 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

Das ist der Hinweis, dass es gestartet wurde, als ich meinen Computer einschaltete, gefolgt von 12.966 Zeilen, die alle die no module named siteNachricht sagten

Beachten Sie das Fehlen eines Datums- / Uhrzeitfelds. Diese Fehler wiederholen sich auch dann, wenn Sie nicht auf die Website gehen (dh auch wenn Sie keine Webanfragen stellen). Wenn Sie in einem Browser auf die Website gehen, bleibt sie einfach hängen, als würde sie auf einen großen Download warten.

die Einstellungen

Apache-Module

Ich verwende eine Python 2.5 Virtualenv mit vielen Paketen (inkl. Django 1.1), die mit pip installiert sind. Ich habe mod_wsgi geladen:

$ 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

Ich verwende "tix" als Domainnamen, der auf localhost in gesetzt ist /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

Apache Konfiguration

Hier ist meine Apache-Konfiguration (Sie können einige Versuche sehen, es zum Laufen zu bringen, kommentierte Zeilen usw.) :

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

wsgi loader

Hier ist mein loader.wsgi:

Früher hatte ich import sitediese Datei, von der ich dachte, dass sie das Problem verursacht haben könnte, aber ich habe sie entfernt und die Fehler treten immer wieder auf.

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

Diese Konfiguration funktionierte unter Ubuntu 10.10 einwandfrei, aber seit ich auf Ubuntu 11.04 aktualisiert habe, werden die oben genannten Fehler angezeigt.

Rory
quelle

Antworten:

6

Ihr mod_wsgi wurde für Python 2.7 kompiliert. Sie können dann nicht versuchen, es auf eine virtuelle Python 2.5-Umgebung zu verweisen.

Auch die Einstellung:

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

zeigt auf das Falsche, auch wenn es sich um eine virtuelle Python 2.7-Umgebung handelt.

Einstellungen:

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

Ich werde auch nichts tun und weiß nicht, woher du die Idee hast, dass du das tun könntest.

FWIW, die mod_wsgi-Dokumentation zu virtuellen Umgebungen finden Sie unter:

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

Dies wird Ihnen jedoch nicht weiterhelfen, da Sie anscheinend zunächst ein grundlegenderes Problem mit Ihren mod_wsgi- und Python-Installationen haben. Das Problem ist möglicherweise eine Variante von:

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

Woher hast du die mod_wsgi.so, die du verwendest?

Wo ist Python 2.7 installiert?

Welche anderen Python-Versionen haben Sie installiert und wo?

Graham Dumpleton
quelle