Когато стартирате приложението ми Flask на моя Ubuntu 16.04.3 x64 уеб сървър, получавам следната грешка, когато се опитвам да импортирам библиотеката Flask-OpenID v1.2.5:
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
Разбирам, че това се случва, защото този модул се зарежда с използване на python 2.7.5 (който съм инсталирал на машината) вместо 3.5.2 (също е инсталиран).
Проверка на версията на python проверява дали е инсталирана на машината:
>> python -V
Python 3.5.2
Виртуалната среда е инициализирана с python 3:
python3 -m venv env
Приложението Flask все още изглежда да използва файлове от питона 2.7.5.
Ако това наистина е проблем, има ли начин да зададете по подразбиране или да се уверите, че Flask използва правилната версия на python? Приложението ми работи без грешки в моята среда за разработка на моя компютър.
Отговори:
2 за отговор № 1Оказва се, че виртуалната ми среда е билаконфигуриран правилно, но проблемът беше в това, че mod_wsgi работи на Apache уеб сървър, беше компилиран през Python версия 2.7.X и се зареждаше Flask с python 2.7.5 вместо 3.5.2.
За да поправите този проблем, първо актуализирах версията на wsgi, която би стартирала python 3.5.1+
sudo apt-get install libapache2-mod-wsgi-py3
От този момент нататък, вашето приложение за колба може да не работи, тъй като вашият виртуален хост, и wsgi файл за вашето приложение трябва да бъде конфигуриран правилно с Python версия 3.
Следвайте този урок: http://devmartin.com/blog/2015/02/how-to-deploy-a-python3-wsgi-application-with-apache2-and-debian/
Трябва също да промените конфигурацията на VirtualHost на показаната и обяснена на тази публикация: https://stackoverflow.com/a/39419825/9367575