尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

VSCode Python扩展自动加载.env环境变量机制(Python插件)python.terminal.useEnvFile 问题背景如图项目新增.env文件后弹出提示框文章目录VSCode Python扩展自动加载.env环境变量机制机制注意事项配置方法方法1VS Code 设置方法2修改settings.json文件VSCode Python扩展自动加载.env环境变量机制这个“自动加载”本质上不是 Python 在读取.env而是VS Code 在创建新终端时把.env中的键值注入终端进程。机制流程大致是.env ↓ VS Code Python 扩展读取 新建的 Bash 终端获得环境变量 ↓ 子进程自动继承 Python / Jupyter / langgraph dev ↓ 示例LangSmith 通过 os.getenv(...) 读取例如.envLANGSMITH_API_KEYlsv2_xxx LANGSMITH_TRACING_V2true LANGSMITH_PROJECTlangchain-academy开启{python.envFile:${workspaceFolder}/.env,python.terminal.useEnvFile:true}当 VS Code 新建终端时相当于在启动 Bash 之前准备好LANGSMITH_API_KEY... LANGSMITH_TRACING_V2true LANGSMITH_PROJECTlangchain-academy因此你运行python jupyter notebook langgraph dev这些程序都是终端的子进程会自动继承变量。Python 中可以直接读取importos os.getenv(LANGSMITH_API_KEY)不再需要load_dotenv()。注意事项几个关键点只对新终端生效已经打开的终端不会自动更新。修改.env后需要删除旧终端并新建一个。只影响 VS Code 集成终端你在 Windows Terminal 或单独打开的 WSL 终端中不会自动获得这些变量。除非手动加载set-asource.envseta它和虚拟环境激活是两套机制虚拟环境激活主要设置PATH VIRTUAL_ENV让python、pip指向lc-academy-env。.env注入则负责LANGSMITH_API_KEY OPENAI_API_KEY TAVILY_API_KEY两者可以同时发生但互不替代。从终端启动的 Jupyter 会继承变量例如jupyter notebookNotebook 内核是该终端的子进程因此能继承变量。但如果直接通过 VS Code Notebook 界面启动内核它不一定经过这个终端这种情况下保留下面这段更稳妥fromdotenvimportload_dotenv load_dotenv()${workspaceFolder}取决于你打开的根目录如果 VS Code 打开的是~/projects/langchain-academy那么python.envFile:${workspaceFolder}/.env会读取~/projects/langchain-academy/.env但若打开的是整个~/projects此时默认位置会变成~/projects/.env所以要么单独打开langchain-academy要么配置python.envFile:${workspaceFolder}/langchain-academy/.env.env是普通配置文件不是完整 Bash 脚本推荐只写简单的NAMEvalue不要在里面写source、循环或其他 Shell 命令。这种机制的优点是配置一次、新终端自动获得变量代价是该终端启动的所有子进程都能读取这些密钥。因此一定要将.env加入.gitignore并且不要运行不可信代码。VS Code Python Environments 官方说明配置方法方法1VS Code 设置打开 VS Code 设置搜索Python: Terminal Use Env File然后勾选。设置完成后关闭当前终端并新建终端因为它只对新终端生效。验证时运行python-cimport os; print(LangSmith Key 已加载, bool(os.getenv(LANGSMITH_API_KEY)))方法2修改settings.json文件也可以编辑settings.json文件选择工作区那个写入{python.terminal.useEnvFile:true}重开终端并测试python-cimport os; print(LangSmith Key 已加载, bool(os.getenv(LANGSMITH_API_KEY)))
返回列表