如何安装使用Flask v1.0.2 运行flask run报ImportError错误
问题原因
两个问题同时导致启动失败:
- 虚拟环境未正确生效:从报错路径看,你执行
flask run调用的是系统全局路径下的Flask(/usr/local/bin/flask),加载的是Python3.8目录下的依赖包,和你创建的Python3.7虚拟环境完全隔离,相当于你之前在虚拟环境里装的包根本没被用到。 - 依赖版本不兼容:就算虚拟环境激活正常,直接安装
Flask==1.0.2时,pip默认会拉取符合版本范围要求的最新版依赖,不会自动匹配该版本Flask发布时的适配依赖。Jinja2从3.1.0版本开始移除了顶层模块的escape导出方法,而Flask1.0.2的代码里仍然保留from jinja2 import escape的导入逻辑,直接触发导入错误。
修复步骤
按顺序操作即可,全程不需要升级Flask版本:
- 清理旧环境避免残留冲突:关闭当前终端,重新打开后进入
myproject目录,执行以下命令删除失效的旧虚拟环境,用Python3.7重新创建:
deactivate 2>/dev/null rm -rf venv python3.7 -m venv venv . venv/bin/activate
激活成功后终端行首会出现(venv)前缀,此时执行which flask如果返回项目路径下的venv/bin/flask,说明环境激活正常;如果仍然返回全局路径,先执行pip uninstall -y flask卸载全局Flask避免冲突。
- 替换requirements.txt内容,锁定所有兼容依赖版本,避免pip拉取不兼容的最新版:
Flask==1.0.2 Werkzeug==0.14.1 Jinja2==2.10 itsdangerous==0.24 MarkupSafe==1.1.1 click==7.1.2
上述版本均为Flask 1.0.2发布时官方验证兼容的依赖组合,不存在API适配问题。
- 执行依赖安装,安装完成后验证版本:
pip install -r requirements.txt flask --version
命令输出如果显示Flask 1.0.2即为安装正确。
- 设置应用入口并启动服务:
export FLASK_APP=webapp.py flask run
启动后访问http://127.0.0.1:5000即可正常看到Hello World返回内容,不会再出现导入报错。
内容的提问来源于stack exchange,提问作者Clifford Fajardo
相关产品推荐
相关产品推荐

