vscode无法激活Conda环境

1. 问题描述

在使用VSCode时,经常需要在不同的Conda环境下进行Python开发。但是有时,出现无法激活Conda环境的问题,即使用命令:

conda activate environment_name

时,出现类似以下错误信息:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.                           

To initialize your shell, run

$ conda init <SHELL_NAME>

Currently supported shells are:

- bash

- fish

- tcsh

- xonsh

- zsh

- powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

这个问题在使用VSCode时尤为常见,需要解决。

2. 解决办法

2.1. 原因分析

出现这个问题,原因在于VSCode与Conda环境之间的连接配置有问题。具体来说,是VSCode的集成终端默认情况下采用的是PowerShell,而PowerShell无法直接激活Conda环境。

2.2. 解决方法

2.2.1. 方法一:启用Anaconda Powershell Prompt

可以通过启用Anaconda Powershell Prompt来解决这个问题。Anaconda Powershell Prompt是Anaconda自带的命令行工具,专门用于管理Conda环境。

具体做法如下:

进入VSCode的设置(打开命令面板(Ctrl + Shift + P),输入“settings”并选择“Open User Settings”),搜索“Terminal ? Integrated ? Shell: Windows”:

点击“Edit in settings.json”:

在打开的settings.json文件中添加以下两行代码:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",

"terminal.integrated.shellArgs.windows": ["/K", "C:\\ProgramData\\Anaconda3\\Scripts\\activate.bat C:\\ProgramData\\Anaconda3"]

其中,“C:\\ProgramData\\Anaconda3”应该改成你本地的Anaconda安装路径。

保存并关闭settings.json文件,重新打开集成终端,应该就可以正常激活Conda环境了。

2.2.2. 方法二:更换默认命令行工具

另外一种解决办法是更换VSCode集成终端使用的默认命令行工具。可以使用比较流行的命令行工具如Cmder或Git Bash来替代PowerShell。

具体做法如下:

安装Cmder或Git Bash。

打开VSCode的设置,搜索“Terminal ? Integrated ? Shell: Windows”:

点击“Edit in settings.json”:

在打开的settings.json文件中添加以下配置,例如使用Cmder的话:

"terminal.integrated.shell.windows": "C:\\Program Files\\Cmder\\Cmder.exe",

"terminal.integrated.shellArgs.windows": ["/START", "cmd.exe", "/k", "C:\\ProgramData\\Anaconda3\\Scripts\\activate.bat C:\\ProgramData\\Anaconda3"]

其中,“C:\\Program Files\\Cmder\\Cmder.exe”应该改成你本地的Cmder安装路径,“C:\\ProgramData\\Anaconda3”应该改成你本地的Anaconda安装路径。

保存并关闭settings.json文件,重新打开集成终端,应该就可以正常激活Conda环境了。

2.3. 参考文献

Environments in Visual Studio Code

Getting started with conda