python - Flask 应用程序运行 Python 2.x 而不是 3.x

标签 python flask

在 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 上的开发环境中运行没有错误。

最佳答案

事实证明我的虚拟环境配置正确,但问题实际上是在 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

从此时起,您的 Flask 应用程序可能无法运行,因为您的虚拟主机,并且您的 Flask 应用程序的 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

关于python - Flask 应用程序运行 Python 2.x 而不是 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48818824/

相关文章:

python - 如何使用 H5PY 将 HDF5 文件导出到 NumPy?

python - 在 Tensorflow 2.1 中转换后无法加载 Tensor RT SavedModel

python - 我的谷歌应用引擎部署的源代码安全吗?

python flask 安全 : encryption error "hash could not be identified"

python - 在 python flask 中为 neo4j + sql 制作 ORM 的最干净方法?一个模型超过 2 个数据库

python - 将包含值列表的字典转换为数据框

python - 十六进制转pem文件

python - 在两个 flask 服务器之间共享 session

python - 如何通过单击 href 函数将值传递给新模板?

python - 有没有一种简单的方法可以让 flask 中的 session 超时?