VSCode中Python无法读取.env变量及环境变量导出疑问
问题排查与解决
先修复你的代码问题
你当前的代码存在两个关键问题:
- 未导入
os模块却调用了os.getenv(),这会直接触发报错(若你没遇到报错,大概率是代码漏贴了导入部分) load_dotenv()默认仅加载当前目录下名为.env的文件,而你使用的是credentials.env,必须手动指定文件路径
修正后的代码:
import os from dotenv import load_dotenv # 加载指定的credentials.env文件 load_dotenv("credentials.env") # 建议把变量名改成更独特的命名,避免和系统默认环境变量冲突 username = os.getenv("APP_USERNAME") password = os.getenv("APP_PASSWORD") print("username: ", username) print("password: ", password)
同时同步修改你的credentials.env文件内容:
APP_USERNAME=你的目标用户名 APP_PASSWORD=你的目标密码
(之所以改名,是因为username是系统默认环境变量,程序会优先读取系统层面的取值,这就是你输出工作ID的核心原因)
解释“exported as environment variables”
这句话的意思是将变量注入到程序运行的系统环境中,让程序可以通过系统提供的环境变量接口(比如Python的os.getenv())读取到。简单来说就是给程序的运行环境“提前设置好全局变量”,既不用在代码里硬写敏感信息,也能避免提交代码时泄露隐私。
具体操作方法
方法1:用python-dotenv加载(推荐,适合开发环境)
就是上面修正代码的方式,确保:
- 已安装
python-dotenv:执行pip install python-dotenv .env文件路径正确,变量名不与系统默认变量重复- 不要将
.env文件提交到代码仓库(添加到.gitignore中)
方法2:手动在终端导出环境变量(临时生效)
若不想用dotenv,可以在运行脚本前,在终端先导出变量:
# Linux/macOS终端 export APP_USERNAME=你的目标用户名 export APP_PASSWORD=你的目标密码 python 你的脚本文件名.py
# Windows PowerShell $env:APP_USERNAME="你的目标用户名" $env:APP_PASSWORD="你的目标密码" python 你的脚本文件名.py
这种方式仅在当前终端会话生效,关闭终端后变量会失效。
方法3:在VSCode中配置永久环境变量
打开VSCode的launch.json文件(若没有,按F5运行一次并选择Python环境后会自动生成),在configurations节点中添加env字段:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "env": { "APP_USERNAME": "你的目标用户名", "APP_PASSWORD": "你的目标密码" } } ] }
这样每次在VSCode中运行脚本,都会自动加载这些环境变量。
内容的提问来源于stack exchange,提问作者BP12
相关产品推荐
相关产品推荐

