os.environ无法获取环境变量:调试正常但直接运行失败
问题原因与解决办法
为什么调试正常但直接运行失效?
VS Code的调试模式会主动读取.vscode/settings.json里配置的python.envFile,在启动调试进程前预先加载指定的环境变量文件,所以代码能正确获取到环境变量。但直接点击「Run Python File」时,VS Code只是在终端中直接执行python test.py命令,不会触发python.envFile的加载逻辑,导致进程无法读取到预设的环境变量,因此输出None。
解决办法
方法一:代码手动加载环境变量(推荐,不受运行方式限制)
使用python-dotenv库实现环境变量的手动加载,这样不管是调试还是直接运行都能生效:
- 安装依赖库:
pip install python-dotenv
- 修改
test.py代码,添加加载逻辑:
import os from dotenv import load_dotenv # 计算project.env的绝对路径:从当前test.py文件往上两级目录定位到目标文件 env_file_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'project.env') load_dotenv(env_file_path) print(os.environ.get('sample')) print(os.environ.get('sample2'))
方法二:配置VS Code让「Run Python File」自动加载环境变量
修改.vscode/settings.json,添加终端启动参数,让运行命令自动加载指定的环境变量文件:
{ "python.envFile": "${workspaceFolder}/project.env", "python.terminal.launchArgs": [ "-m", "dotenv run", "--" ] }
注意:该配置需要先安装python-dotenv库,之后点击「Run Python File」时,VS Code会自动以python -m dotenv run -- test.py的方式执行,确保环境变量被加载。
内容的提问来源于stack exchange,提问作者Prosy A.
相关产品推荐
相关产品推荐

