Beim Ausführen meiner Flask-Anwendung auf meinem Ubuntu 16.04.3 x64-Webserver erhalte ich beim Importieren der Flask-OpenID-Bibliothek v1.2.5 die folgende Fehlermeldung:
File "/usr/local/lib/python2.7/dist-packages/openid/oidutil.py", line 17, in <module>
from urllib.parse import urlencode
ImportError: No module named parse
Ich verstehe, dass dies geschieht, weil dieses Modul mit Python 2.7.5 (das ich auf meinem Rechner installiert habe) anstelle von 3.5.2 geladen wird (auch installiert haben).
Wenn Sie die Version von Python überprüfen, wird überprüft, ob sie auf dem Computer installiert ist:
>> python -V
Python 3.5.2
Die virtuelle Umgebung wurde mit Python 3 initialisiert:
python3 -m venv env
Die Flask-App scheint immer noch Dateien aus dem Python 2.7.5 zu verwenden.
Gibt es eine Möglichkeit, einen Standard festzulegen oder um sicherzustellen, dass Flask die richtige Version von Python verwendet? Meine App läuft fehlerfrei in meiner Entwicklungsumgebung auf meinem PC.
Antworten:
2 für die Antwort № 1Es stellt sich heraus, dass meine virtuelle Umgebung warrichtig konfiguriert, jedoch bestand das Problem in der Tat darin, dass mod_wsgi auf dem Apache-Webserver ausgeführt wurde, für Python Version 2.7.X kompiliert wurde und Flask mit Python 2.7.5 statt 3.5.2 geladen wurde.
Um dieses Problem zu beheben, wurde zunächst die Version von wsgi aktualisiert, auf der Python 3.5.1 und höher ausgeführt wird
sudo apt-get install libapache2-mod-wsgi-py3
Ab diesem Zeitpunkt wird Ihre Flaschenanwendung möglicherweise nicht mehr ausgeführt, da Ihr virtueller Host und die Wsgi-Datei für Ihre Flaschenanwendung ordnungsgemäß mit Python Version 3 konfiguriert werden muss.
Folgen Sie dieser Anleitung: http://devmartin.com/blog/2015/02/how-to-deploy-a-python3-wsgi-application-with-apache2-and-debian/
Sie sollten auch Ihre VirtualHost-Konfiguration auf die in diesem Beitrag gezeigte und ändern. https://stackoverflow.com/a/39419825/9367575