Apache mit virtualenv und mod_wsgi : ImportError : No module named 'django'
Ich versuche zu dienen, ein wenig django Projekt mit folgender Apache-Konfiguration :
Apache-virtualhost-Konfiguration :
<VirtualHost *>
ServerName servername
[...]
<Directory "/path/to/project/project">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess project python-path=/path/to/project:/path/to/Envs/venv/lib/python3.5/site-packages
WSGIScriptAlias //path/to/project/project/wsgi.py
</VirtualHost>
Außerdem habe ich folgenden wsgi.py :
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example.settings")
application = get_wsgi_application()
Ich habe kein problem, zu dienen, STATISCHE Dateien und MEDIEN-Dateien.
Ich habe auch überprüft die Berechtigungen und versucht rekursiv verwenden, 755, dann 777 auf meine virtualenv site-package-Verzeichnis. Es hat nicht funktioniert.
Aber beim erreichen der root meiner site bekomme ich die folgende :
from django.core.wsgi import get_wsgi_application
ImportError: No module named 'django'
Ich vermutete, dass es war ein Python-Pfad problem, da django installiert ist, in meine virtualenv. Aber ich habe die entsprechenden python Pfade zu den WSGIDaemonProcess
's python-path
Attribut, so verstehe ich nicht, warum es nicht funktioniert.
Ich denke, auch ich könnte fügen Sie die entsprechenden Verzeichnis zu meinem Python-Pfad in meinem wsgi.py durch die Verwendung der Website
- Modul, aber ich würde gerne verstehen, warum der Apache-Konfiguration habe ich versucht, ist nicht genug. Hab ich was verpasst?
InformationsquelleAutor vmonteco | 2016-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen fehlen
WSGIProcessGroup
Richtlinie oder die entsprechende option aufWSGIScriptAlias
, so dass Ihre Anwendung nicht tatsächlich ausgeführt werden, dass daemon-Prozess-Gruppe, wo Sie die virtuelle Umgebung.Sehen Mit mod_wsgi daemon-Modus
Ich würde auch empfehlen eine Anwendung Gruppe von '%{GLOBAL}', wenn das ist die einzige Anwendung, die Sie ausführen, in die daemon-Prozess-Gruppe.
Also:
Auch besser
python-home
für die virtuelle Umgebung.Finden Sie unter:
InformationsquelleAutor Graham Dumpleton
Meine rep ist nicht über 50, so kann ich nicht kommentieren, aber ich möchte zu teilen meine Entdeckung.
In WSGIDaemonProcess, wenn Sie mit Python 3.5, müssen Sie festlegen, genau so, wie @graham-dumpleton sagen, mit
explizit festgelegt.
Jedoch, wenn Sie mit Python 3.4 (oder eine ältere version von Python 2.7 wie soweit ich weiß), müssen Sie es konfigurieren, als
genau wie das, was der Fragesteller getan hat.
Wirklich seltsam.
python-home
. Ich kenne keine Probleme bei der Verwendung der nicht bevorzugte Art der Einstellungpython-path
, aber es ist einfach nicht das, was Sie tun sollten. Diepython-home
option ist die beste Möglichkeit der Einstellung der Position des virtuellen Umgebung für eine lange Zeit. So lange, dass auch Linux-Distributionen mit alten mod_wsgi-Versionen sollte immer noch funktionieren. Dies ist auch dann der Fall, wenn die Dokumentation noch nicht aktualisiert wurden. 🙂Vielen Dank für Ihre Beratung. Aber in meinem Fall, ich bin mit python 3.4, und die Einstellung war die "python-home" Art und Weise, wie Sie erwähnt. Allerdings, meine Website nicht besucht werden, wie der Apache hält Fehler beim senden "Import Error:No module named 'Website'". So lange, wie ich es konfigurieren für "nicht bevorzugte Weg",": "wie der Fragesteller haben, dass dieses Problem gelöst wurde. Und ja, für Python 3.5, verwenden Sie die python-home" Weg, oder [ImportError : No module named 'django'] Ausgabe steigen wird.
Das bedeutet, dass Ihre mod_wsgi ist eigentlich nicht kompilierte version von Python. Kann man nicht erzwingen mod_wsgi verwenden eine andere Python-version es kompiliert wurde. Eines der Probleme bei der Verwendung
python-path
ist, dass es nicht zeigen, als auch, wenn Sie das falsche zu tun und zu versuchen mod_wsgi verwenden einer virtuellen Umgebung für eine andere Python-version als mod_wsgi zusammengestellt. Bei der Verwendung vonpython-home
es wird stattdessen scheitern richtig so erzählen Sie, dass Sie etwas falsch machen.Verwenden Sie die dokumentierte Prüfung für die Bestimmung, welche Python-version mod_wsgi zusammengestellt. Wenn es nicht die Python version, die Sie verwenden möchten, müssen Sie Sie deinstallieren, mod_wsgi und Installation aus einem Paket-einer für die richtige version, oder kompilieren von source-code, um sicherzustellen, ist für die richtige version. Verwenden Sie nicht
python-path
zu umgehen, als es scheitern wird später auf seltsame Weise. modwsgi.readthedocs.io/de/develop/user-guides/...InformationsquelleAutor Valorad
Für mich das problem war hatte ich die mod-wsgi installiert python2. Ich musste es neu installieren, für Python ist3:
InformationsquelleAutor Marijus