VSCode Python扩展自动加载.env环境变量机制(Python插件)python.terminal.useEnvFile

问题背景:

如图,项目新增.env文件后,弹出提示框

文章目录

VSCode Python扩展自动加载.env环境变量机制

这个"自动加载"本质上不是 Python 在读取 .env,而是 VS Code 在创建新终端时,把 .env 中的键值注入终端进程。

机制

流程大致是:

text 复制代码
.env
  ↓ VS Code Python 扩展读取
新建的 Bash 终端获得环境变量
  ↓ 子进程自动继承
Python / Jupyter / langgraph dev
  ↓
(示例)LangSmith 通过 os.getenv(...) 读取

例如 .env:

dotenv 复制代码
LANGSMITH_API_KEY=lsv2_xxx
LANGSMITH_TRACING_V2=true
LANGSMITH_PROJECT=langchain-academy

开启:

json 复制代码
{
  "python.envFile": "${workspaceFolder}/.env",
  "python.terminal.useEnvFile": true
}

当 VS Code 新建终端时,相当于在启动 Bash 之前准备好:

text 复制代码
LANGSMITH_API_KEY=...
LANGSMITH_TRACING_V2=true
LANGSMITH_PROJECT=langchain-academy

因此你运行:

bash 复制代码
python
jupyter notebook
langgraph dev

这些程序都是终端的子进程,会自动继承变量。Python 中可以直接读取:

python 复制代码
import os

os.getenv("LANGSMITH_API_KEY")

不再需要 load_dotenv()。

注意事项

几个关键点:

  1. 只对新终端生效

已经打开的终端不会自动更新。修改 .env 后,需要删除旧终端并新建一个。

  1. 只影响 VS Code 集成终端

你在 Windows Terminal 或单独打开的 WSL 终端中,不会自动获得这些变量。除非手动加载:

bash 复制代码
set -a
source .env
set +a
  1. 它和虚拟环境激活是两套机制

虚拟环境激活主要设置:

text 复制代码
PATH
VIRTUAL_ENV

让 python、pip 指向 lc-academy-env。

.env 注入则负责:

text 复制代码
LANGSMITH_API_KEY
OPENAI_API_KEY
TAVILY_API_KEY

两者可以同时发生,但互不替代。

  1. 从终端启动的 Jupyter 会继承变量

例如:

bash 复制代码
jupyter notebook

Notebook 内核是该终端的子进程,因此能继承变量。但如果直接通过 VS Code Notebook 界面启动内核,它不一定经过这个终端;这种情况下,保留下面这段更稳妥:

python 复制代码
from dotenv import load_dotenv

load_dotenv()
  1. ${workspaceFolder} 取决于你打开的根目录

如果 VS Code 打开的是:

text 复制代码
~/projects/langchain-academy

那么:

json 复制代码
"python.envFile": "${workspaceFolder}/.env"

会读取:

text 复制代码
~/projects/langchain-academy/.env

但若打开的是整个 ~/projects,此时默认位置会变成:

text 复制代码
~/projects/.env

所以要么单独打开 langchain-academy,要么配置:

json 复制代码
"python.envFile": "${workspaceFolder}/langchain-academy/.env"
  1. .env 是普通配置文件,不是完整 Bash 脚本

推荐只写简单的:

dotenv 复制代码
NAME=value

不要在里面写 source、循环或其他 Shell 命令。

这种机制的优点是配置一次、新终端自动获得变量;代价是该终端启动的所有子进程都能读取这些密钥。因此一定要将 .env 加入 .gitignore,并且不要运行不可信代码。VS Code Python Environments 官方说明

配置方法

方法1:VS Code 设置

打开 VS Code 设置,搜索:

Python: Terminal Use Env File

然后勾选。

设置完成后,关闭当前终端并新建终端,因为它只对新终端生效。

验证时运行:

bash 复制代码
python -c 'import os; print("LangSmith Key 已加载:", bool(os.getenv("LANGSMITH_API_KEY")))'

方法2:修改settings.json文件

也可以编辑settings.json文件,选择工作区那个:

写入:

json 复制代码
{
  "python.terminal.useEnvFile": true
}

重开终端,并测试:

bash 复制代码
python -c 'import os; print("LangSmith Key 已加载:", bool(os.getenv("LANGSMITH_API_KEY")))'
相关推荐
计算机毕业编程指导师7 分钟前
【Python毕设选题推荐】基于Hadoop+Django的奥斯卡奖获奖数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·毕业设计·课程设计·奥斯卡奖
风早爽太8 分钟前
Python 学习笔记:数据库迁移工具 ‌Alembic
数据库·python·fastapi·alembic
外收内放11 分钟前
06 | 优化篇① 游戏改名《鳞光纪》了:这次翻新,把“脸“全换了
python·游戏·pygame
计算机毕业编程指导师14 分钟前
【大数据毕设选题】基于Spark的电信网络诈骗话术语义特征挖掘分析系统源码 毕业设计 选题推荐 数据分析 机器学习 深度学习
大数据·hadoop·python·spark·毕业设计·课程设计·网络诈骗
for_ever_love__19 分钟前
电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额
python·数据分析·pandas·数据清洗
计算机毕业编程指导师20 分钟前
计算机大数据毕设怎么选?基于Spark的个体肥胖健康风险评估的数据分析与可视化系统带你通关 源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·肥胖风险
坤坤子吖20 分钟前
Python基础语法学习:函数
开发语言·笔记·python·学习
玖石书20 分钟前
linux 安装uv(python虚拟环境管理)
linux·python·uv
言乐625 分钟前
Python体现逻辑回归和决策树的区别
开发语言·python·算法·决策树·逻辑回归
LOVE️YOU31 分钟前
Python 类与对象的核心逻辑:从 self、cls 到点号、括号与链式调用
开发语言·python