Win10下venv激活报错 运行Flask报No module named 'flask'
Windows10 虚拟环境部署Flask报错排查方案
核心问题关联性结论
PowerShell执行策略限制导致虚拟环境无法正常激活,是运行代码时提示ModuleNotFoundError: No module named 'flask'的核心原因。
你执行pip freeze看到Flask已安装,实际查询到的是全局Python环境的依赖包,并非当前项目虚拟环境内的安装结果。VS Code中选中虚拟环境解释器后,如果终端未完成虚拟环境激活,运行代码时仍会调用全局或其他错误路径的Python解释器,自然无法匹配到对应环境的依赖。
分步解决流程
- 修复PowerShell脚本执行策略限制
以管理员身份启动PowerShell,执行命令:
弹出权限确认提示时输入Set-ExecutionPolicy RemoteSignedY回车即可。该策略仅允许运行本地自建脚本、以及受信任发布者签名的远程脚本,不会放开无限制脚本执行权限,无额外安全风险。
策略修改完成后回到项目目录,执行虚拟环境激活命令:
激活成功后,终端输入路径的最前方会出现./flask_ven/Scripts/Activate.ps1(flask_ven)的环境标记,代表虚拟环境已正确加载。 - 确认Flask安装到目标虚拟环境
保持虚拟环境激活状态,执行pip list查看当前环境的已安装包列表,如果未找到Flask,执行pip install flask==2.1.2完成安装即可。禁止跳过虚拟环境激活步骤直接执行pip安装,否则依赖会被默认安装到全局Python环境,无法被虚拟环境内的项目识别。 - 修正VS Code环境匹配问题
你操作过程中出现了虚拟环境名拼写不一致的问题:创建时命名为flask_ven,报错路径中显示为flask_env,VS Code选择解释器时显示为flask_evn,需要先核对项目目录下实际的虚拟环境文件夹名称,重新通过Python: Select Interpreter选择路径完全匹配的解释器。
选完解释器后按Ctrl+Shift+P调出命令面板,选择Terminal: Create New Terminal新建终端,新终端会自动激活选中的虚拟环境,此时再运行代码即可。
测试代码冗余修正
你编写的测试代码首行from distutils.log import debug为无效导入,Flask内置的debug参数不需要从distutils模块引入,删除该行即可避免不必要的兼容报错,修正后的可运行代码如下:
from flask import Flask app = Flask("mpg_prediction") ## 为应用指定名称 @app.route('/', methods=['GET']) ## 服务连通性测试路由 def ping(): return "Pinging Model Application!!" if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=9696)
内容的提问来源于stack exchange,提问作者carmen
相关产品推荐
相关产品推荐

