真正安全的做法是让敏感变量根本不出现在调试配置中,即删除launch.json的env字段,改用系统级或.python-dotenv加载.env文件,并确保其被.gitignore和files.exclude隐藏,同时关闭debug.showvariables。

直接在调试时隐藏环境变量,不是靠“不显示”,而是靠“不注入”——launch.json 里硬写的 env 字段本身就是最大风险源。真正安全的做法是让敏感变量根本不出现在调试配置中。
别在 launch.json 的 env 里写密钥
这是最常见也最危险的操作。一旦提交到 Git,密钥就永久暴露了。VSCode 不会校验你填的是不是密码,它只负责原样传递。
- ❌ 错误示例:
"env": { "DB_PASSWORD": "mysecretpass" } - ✅ 正确做法:删掉整个
env块,改用系统级或项目级加载 - 环境变量应由操作系统或
.env文件提供,VSCode 调试器只需继承,无需手动声明
用 .env 文件 + python-dotenv 安全加载
Python 项目推荐用 python-dotenv 自动读取 .env,这样调试器启动时变量已就位,launch.json 完全不用碰敏感字段。
- 确保
.env已加入.gitignore(否则白搭) - 安装依赖:
pip install python-dotenv - 在入口文件顶部加:
from dotenv import load_dotenv; load_dotenv() -
launch.json中保留空的env或直接删除该字段
启用 files.exclude 隐藏 .env 文件本身
即使不显示变量值,编辑器里看到 .env 文件名也可能泄露意图。用 VSCode 内置机制让它“不可见”:
- 在项目根目录的
.vscode/settings.json中添加: "files.exclude": { "**/.env": true }- 同时配
"search.exclude": { "**/.env": true },防止搜索时意外命中 - 注意:这只是视觉隐藏,不替代
.gitignore,两者必须共存
调试时变量面板仍显示?关掉 debug.showVariables
即使环境变量来自外部,VSCode 默认仍会在调试变量面板中列出所有 os.environ 键值对——包括 DB_PASSWORD。这不是 bug,是默认行为。
- 打开设置(
Ctrl + ,),搜debug.showVariables - 设为
never,或更精细地设为onFirstLoad(仅首次加载时显示) - 该设置等价于修改用户设置:
"debug.showVariables": "never" - ⚠️ 注意:这会影响所有调试会话,不只是 Python;如果需要临时查看,快捷键
Ctrl+Shift+P→Debug: Toggle Variables View可手动开关
真正麻烦的不是“怎么藏”,而是“变量到底从哪来”。只要 launch.json 里没硬编码、.env 没进 Git、变量面板被策略性关闭,敏感信息就不会在运行时浮出水面——而这些环节里,.gitignore 和 files.exclude 的配合最容易漏掉,一漏就前功尽弃。











