VS Code运行Flask应用时launch.json内环境变量无法识别问题
问题根本原因
launch.json是VSCode调试器专属的配置文件,你在里面env字段定义的所有环境变量,只会在你通过VSCode「运行和调试」面板启动对应Python: Flask调试任务时,才会被注入到当前运行的进程环境中。你直接执行python run.py启动脚本、或者手动打开Python交互式终端,都不会加载该配置内的环境变量,自然读不到对应值、Debug模式也不会生效。
你手动在app.run()中添加debug=True只是硬编码开启了Flask的调试模式,和环境变量加载逻辑完全无关,所以其他你定义在launch.json里的环境变量依然无法被读取,调用os.environ.get()返回None属于正常现象。
解决方案
你可以根据使用场景选择以下任意一种方式处理:
1. 统一使用VSCode调试模式启动
直接按F5或者点击VSCode运行面板的「启动调试」按钮,走你写好的launch.json配置启动应用,此时所有env里的变量都会正常生效,Debug模式也会自动开启,不需要在app.run()里额外加debug=True参数。
2. 终端临时设置环境变量
如果要直接执行python run.py启动,你可以先在当前终端设置环境变量,变量仅在当前终端窗口生效:
- Windows CMD终端:
set FLASK_DEBUG=1 set EMAIL_USER=farmgo.project.21@gmail.com python run.py
- Windows PowerShell终端:
$env:FLASK_DEBUG = 1 $env:EMAIL_USER = "farmgo.project.21@gmail.com" python run.py
- macOS/Linux终端:
export FLASK_DEBUG=1 export EMAIL_USER=farmgo.project.21@gmail.com python run.py
3. 用.env文件统一管理环境变量(推荐)
这种方式不需要反复设置变量,调试和直接运行都可以复用同一套配置:
- 项目根目录新建
.env文件,写入所有环境变量:
FLASK_APP=run.py FLASK_ENV=development FLASK_DEBUG=1 EMAIL_USER=farmgo.project.21@gmail.com EMAIL_PASS=password
- 安装环境变量加载工具:
pip install python-dotenv
- 配置双端加载:
- VSCode调试端:删除
launch.json里的env字段,新增"envFile": "${workspaceFolder}/.env",调试时会自动读取该文件的变量 - 脚本启动端:在
run.py最顶部添加如下代码,直接运行脚本时也会自动加载变量:
from dotenv import load_dotenv load_dotenv() - VSCode调试端:删除
配置完成后,不管用哪种方式启动,都可以通过os.environ.get()正常读取到所有环境变量。
内容的提问来源于stack exchange,提问作者johnkideys
相关产品推荐
相关产品推荐

