在我的Ubuntu 16.04.3 x64 Web服务器上运行Flask应用程序时,尝试导入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 app似乎仍在使用python 2.7.5中的文件。
如果这确实是问题,有没有办法设置默认值或确保Flask使用正确版本的python?我的应用程序在我的PC上的开发环境中运行时没有错误。
答案 0 :(得分:2)
事实证明我的虚拟环境配置正确,但问题实际上是在Apache Web服务器上运行的mod_wsgi,是在Python版本2.7.X上编译的,并使用python 2.7.5而不是3.5.2加载Flask
要解决此问题,我首先更新为运行python 3.5.1 +
的wsgi版本sudo apt-get install libapache2-mod-wsgi-py3
从现在开始,您的烧瓶应用程序可能无法运行,因为您的虚拟主机需要使用python版本3正确配置烧瓶应用程序的wsgi文件。
请遵循本教程:http://devmartin.com/blog/2015/02/how-to-deploy-a-python3-wsgi-application-with-apache2-and-debian/
您还应该将VirtualHost配置更改为此帖子中显示和解释的配置:https://stackoverflow.com/a/39419825/9367575