【发布时间】:2018-02-16 13:58:56
【问题描述】:
在我的 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 应用似乎仍在使用来自 python 2.7.5 的文件。
如果这确实是问题,有没有办法设置默认值或确保 Flask 使用正确版本的 python?我的应用在我的 PC 上的开发环境中运行,没有错误。
【问题讨论】:
-
能否确认pip版本,如果安装时没有激活virtualenv,pip和pip3选择python2.7和3。
-
urllib.parse 是仅在 python 3.x 中可用的功能,因此 Flask 应用程序是为 3.x 设计的,您应该在 python 3.5 而不是 python 2.7 下运行该应用程序。
-
当然可以。运行 pip -V 显示:pip 8.1.1 from /var/www/FlaskApp/FlaskApp/env/lib/python3.5/site-packages (python 3.5) 我确保使用“source env/bin/”激活环境激活”
-
好的,我想我解决了部分问题,我的 Apache Web 服务器运行的是不同版本的 mod_wsgi,它是为 python 2.7 及更低版本编译的。但是,使用全新安装,我现在收到错误消息,告诉我无法导入我自己的 python 文件。例如“ImportError: No module named 'api_utils'”