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集成终端时自动激活虚拟环境?

12 回复

先进入虚拟环境,在自动进入“集成终端”不就行了么,另存为 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,都不给选择版本的机会。
如果打扰您了,请见谅。

回到顶部