Python中如何在Windows环境下启动VSCode集成终端时自动激活虚拟环境?
-
环境:windows7,python3.5.4,vscode1.17
-
我已经在“工作区设置” pythonPath,即:"python.pythonPath": "d:/Programs/Learn/venv/scripts/python.exe"
-
vscode 也能正确地工作。
-
现在就是 vscode 的“集成终端”依然是在 python 虚拟环境外,即:d:/programs/learn>
-
我想进入 python 虚拟环境,还需要手动进入 d:/programs/learn/venv/scripts/路径下,去手动执行 activate.bat 才能“激活”进入 python 虚拟环境,即:( venv ) d:/programs/learn/venv/scripts>
-
请教,如何在启动 vscode 的“集成终端”的时候,集成终端自动进入 python 的虚拟环境?
Python中如何在Windows环境下启动VSCode集成终端时自动激活虚拟环境?
先进入虚拟环境,在自动进入“集成终端”不就行了么,另存为 bat 或者 ps 脚本
xxx/activate.bat
code
在Windows的VSCode里让集成终端自动激活虚拟环境,有几种靠谱的方法:
方法一:修改VSCode的终端设置(推荐)
直接在VSCode的settings.json里配置,这是最直接的方式。打开命令面板(Ctrl+Shift+P),搜索并打开"Preferences: Open User Settings (JSON)",然后添加:
{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": [
"-ExecutionPolicy",
"Bypass",
"-NoExit",
"-Command",
"& { if ($env:VIRTUAL_ENV) { & $env:VIRTUAL_ENV\\Scripts\\Activate.ps1 } }"
]
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell"
}
这个配置会在启动PowerShell终端时,如果检测到VIRTUAL_ENV环境变量(通常由Python扩展设置),就自动运行激活脚本。
方法二:使用Python扩展的终端设置
如果你用VSCode的Python扩展,可以在项目目录下的.vscode/settings.json里设置:
{
"python.terminal.activateEnvironment": true,
"python.terminal.activateEnvInCurrentTerminal": true
}
这样当你通过Python扩展选择解释器时,打开的终端会自动激活对应的虚拟环境。
方法三:配置PowerShell Profile 如果想在任意PowerShell终端都自动激活,可以编辑PowerShell的profile脚本。先看看profile文件是否存在:
Test-Path $PROFILE
如果没有就创建:
New-Item -ItemType File -Path $PROFILE -Force
然后在里面添加激活逻辑,比如:
function Activate-Venv {
if (Test-Path .\venv) {
& .\venv\Scripts\Activate.ps1
}
elseif (Test-Path .\.venv) {
& .\.venv\Scripts\Activate.ps1
}
}
Set-Alias -Name avenv -Value Activate-Venv
方法四:使用启动脚本
在项目根目录放个start.ps1脚本:
# start.ps1
& .\venv\Scripts\Activate.ps1
code .
然后右键用PowerShell运行这个脚本,它会先激活虚拟环境再打开VSCode。
简单总结: 直接改VSCode的settings.json配置终端参数是最省事的。
我记得有配置项的,在配置里找找
用 pipenv,运行 pipenv shell,轻松便捷
老师您再指点明白点可以吗?我是个新新新手……
在 vscode 的全局设置里, 设置 “python.venvPath”:"", 这个目录可以存放所有的虚拟环境. 在 project 中的.vscode/settings.json 中配置 “python.pythonPath”: “D:/Development/envs/venv35/scripts/python.exe”,. 或运行 使用命令格式, ctrl + shift + P 输入, python: Select Workspace Interpreter 选中你的 venv.
谢谢您帮忙,但是您误会我的意思了。
您说的环境选择我知道,我问的是 vscode 中的“集成终端”如何自动激活 python 虚拟环境。
您的环境也一样,即便你选择了 python 虚拟环境里的 python.EXE ,您的 vscode 里“集成终端”还是启动的 C:/WINDOWS/SYSTEM32/CMD.EXE
用 pycharm 吧
谢谢你。
确实,pycharm,在选择好 venv 后,调用集成终端,是默认虚拟环境并进入当前路径。
vscode 就不是这样,我觉得这也是 vscode 还不够完善的方面。
解决方法是,在 vscode 配置项里,以带 -k 参数的形式运行终端。(具体可以百度 命令行参数 -k 的用法。)
vscode 是通用编辑器,自然不如专用 ide,而最新的 pycharm 创建项目的时候会项目文件夹下自动创建虚拟环境
嗯,是的。
但这种“在项目文件夹下建 VENV ”的逻辑,我觉得逻辑是有问题的。
举个小例子:
Django 项目,是先建立 venv ?还是先建立“项目”?而且 pycharm 自动建 Django 项目是自动用的最新的 Django,都不给选择版本的机会。
如果打扰您了,请见谅。

