Django, Apache und Virtualenv ImportError: No module named site
Den Fehler von apache nach einer 504-Seite
[info] mod_wsgi (pid=): Python home /var/venv/mybox.
[info] mod_wsgi (pid=): Initializing Python.
ImportError: No module named site
Dies ist mit kaum konfiguriert, app.
<IfModule mod_wsgi.c>
WSGIDaemonProcess myapp python-home=/var/venv/mybox
WSGIProcessGroup myapp
WSGIScriptAlias //var/www/html/web/myapp/wsgi.py
WSGISocketPrefix /var/run/wsgi
<Directory /var/www/html/web>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</IfModule>
Folgte jeden post und tutorial, kann ich. Ich bin auf CENTOS6 . mithilfe virtueller env python 2.7 die Standard-system-env 2,6
$ ldd /etc/httpd/modules/mod_wsgi.so
linux-vdso.so.1 => (0x00007ffc06174000)
mywsgi.py
import os,sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
sys.path.insert(0,'/var/www/html/web')
activate_this = '/var/venv/mybox/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
application = get_wsgi_application()
PYHTONHOME ist nicht festgelegt
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Dokumentation für die Verwendung von virtuellen Umgebungen mit mod_wsgi finden Sie unter:
Wichtigste in deinem Fall ist der Abschnitt:
In diesem Abschnitt heißt es:
Also wahrscheinlich das, was passiert ist, dass mod_wsgi ist zusammengestellt für Python 2.6. Sie können in diesem Fall die Kraft, die es die Verwendung einer virtuellen Python-Umgebung erstellt von Python 2.7. Wenn Sie dies tun, erhalten Sie die Fehlermeldung, die Sie sehen, über
site
Modul fehlt.Deinstalliert werden muss, dass mod_wsgi von system-packages und installieren Sie mod_wsgi aus dem source-code, kompilieren Sie es gegen Python 2.7. Der einfachste Weg dies zu tun ist die Verwendung der
pip install
- Methode wie beschrieben in:Laufen
pip install
installieren Sie es in Ihrer virtuellen Umgebung und befolgen Sie anschließend die Anweisungen im Abschnitt 'Anschluss in die Apache-installation' über die Konfiguration von Apache zu verwenden./var/www
.Gelöst in CentOS 7 mit Apache 2.4.6
Mein ganzer server verwendet Python 2.7, aber ich habe die schon installierten Python-3.6 und meine virtualenv ist mit Python 3.6.
Nach konfiguriert djang.conf (/etc/httpd/conf.d/django.conf) mit diesem code:
Neu gestartet und mein apache
Bekam ich diese Fehlermeldung tausend Zeilen (/var/log/httpd/error_log)
Die Lösung
Erste:
Habe ich diese:
Hinweis: die Python-version (2.7.5). Was ich getan habe zu bekommen mod_wsgi nach meiner Python 3.6 ist mit:
und ich habe dann installiert das Paket python36u-mod_wsgi.x86_64:
Dann habe ich neu gestartet, den Apache-Dienst:
Und hat diese neue Linie von Protokollen:
Und alles funktioniert! 🙂
Hoffe es hilft dir. C ya!
diese fron der Dokumentation
schreiben Sie dies:
WSGIScriptAlias //path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /Pfad/zu/mysite.com
- und dies ist spezifisch für die virtuellen env, Sie müssen schreiben Sie den Pfad zu der Website paketpapier Ihrer python virtual env:
kann das problem auch in die -
PYTHONHOME
Versuchen zu bereinigen Ihre
PYTHONHOME
: