VS Code单工作区不同子目录自动匹配Python虚拟环境配置方法
多子目录绑定独立Python虚拟环境实现方案
不需要手动切换环境、同时覆盖直接运行和调试场景的实现方式有两种,按需选择即可:
方案1:VS Code 子目录独立配置(最适配日常VS Code开发场景)
完全可以通过子目录单独配置settings.json实现自动切换,不需要写多个launch启动项,配置后不管是点右上角运行按钮、右键运行Python文件还是调试,都会自动调用对应虚拟环境:
- 分别在
dir1、dir2子目录下新建.vscode/settings.json文件,配置优先级遵循VS Code的就近规则,子目录配置会覆盖根目录的全局配置 - 在
dir1/.vscode/settings.json中写入venv1的解释器配置:
{ "python.defaultInterpreterPath": "./venv1/bin/python" }
Windows环境下路径替换为./venv1/Scripts/python.exe即可
- 在
dir2/.vscode/settings.json中写入venv2的解释器配置,路径对应替换为venv2的python可执行文件路径 - 配置完成后,只要打开对应子目录下的Python文件,VS Code的Python扩展会自动识别当前目录绑定的解释器,所有运行、调试、代码补全、依赖检查都会走对应虚拟环境,打开集成终端时也会自动激活匹配的虚拟环境。
注意:不需要额外配置launch.json的python参数,默认调试配置会自动读取当前目录绑定的defaultInterpreterPath,比多启动项配置维护成本低很多。
方案2:终端级自动切换(适配命令行直接运行场景)
如果需要在VS Code外部的系统终端中运行脚本,可以搭配目录环境自动切换工具实现零手动操作:
- 安装direnv工具,在
dir1目录下新建.envrc文件,写入虚拟环境激活命令:source ./venv1/bin/activate(Windows替换为venv1下的Activate.ps1或bat脚本路径) - 在
dir2目录下的.envrc中写入venv2的激活命令 - 分别在两个目录下执行
direnv allow授予权限后,只要cd进入对应目录就会自动激活绑定的虚拟环境,离开目录时自动退出虚拟环境,全程不需要手动执行activate命令。
内容的提问来源于stack exchange,提问作者Aurelie Navir
相关产品推荐
相关产品推荐

