Visual Studio Code终端无法激活Conda环境

48

我阅读了这篇Stack Overflow帖子,与我的问题类似,但那里的建议似乎不起作用。我在Windows机器上安装了Visual Studio Code,并添加了Python扩展。然后我将我的项目的Python路径更改为C:\Users\username\.conda\envs\tom\python.exe。 在.vscode/settings.json中包含以下内容:

{
    "python.pythonPath": "C:\\Users\\username\\.conda\\envs\\tom\\python.exe"
}

Visual Studio Code 的状态栏还显示:

在此输入图片描述

但是,当我在终端中执行 conda env list 命令并在其中运行 conda activate tom 命令后,输出如下:

# conda environments:
#
base                  *  C:\ProgramData\Anaconda3
tom                      C:\Users\username\.conda\envs\tom

改为:

# conda environments:
#
base                     C:\ProgramData\Anaconda3
tom                   *  C:\Users\username\.conda\envs\tom

同时,当我尝试运行python app.py时,未在基础环境中安装的软件包不会被导入。我该怎么办?

where python可以正常运行,但没有任何输出。

另外,

import os
import sys
os.path.dirname(sys.executable)

提供

'C:\\Python38'

1
我有同样的问题。以前它是可以工作的,而且我从来没有必须从conda提示符中启动VS代码。此外,使用了正确的python.exe(来自环境),只是找不到依赖项。 - Jann Poppinga
2
问题可能是 PowerShell 是 VSCode 的默认 shell,但 miniconda、miniforge 和 mambaforge 只能与 CMD.EXE(在 Windows 上)一起使用。当从 PowerShell 而不是 CMD shell 运行 .bat 文件时,环境变量被设置,但随后在 CMD.EXE 进程立即退出时被丢弃,从而永远不会更新 PowerShell 环境。 - yzorg
17个回答

46

2
没有,我没有收到任何错误信息...它打开了VSCode,我添加了我的项目,然后在终端中尝试了conda env list...我仍然得到了base作为我的激活环境。 - Sabito stands with Ukraine
可能是由于 VSCode 的安装方式导致的。尝试卸载它,然后从 Anaconda-Navigator 重新安装。 - Gustav Rasmussen
您可以先卸载Anaconda-Navigator,然后重新安装它,这样VSCode就会再次可用于从那里安装。之前对VSCode的删除可能是由于Anaconda安装而不是系统安装。这应该可以解决问题。 - Gustav Rasmussen
1
如果您已经在虚拟环境中安装了许多特定的软件包,您可以运行命令:conda list,并将软件包名称和版本复制到文件中以便更轻松地重新安装。(此命令只会显示使用conda安装的软件包,对于使用pip安装的软件包,您必须打开实际的安装文件夹才能查看)。 - Gustav Rasmussen
1
我尝试过,但只使用了几个软件包。但是我担心你可能会遇到依赖关系解决问题。不过,重新安装软件包不会花费太多时间。只要记录下软件包名称和版本的当前状态,整个过程应该很顺利。 - Gustav Rasmussen
显示剩余2条评论

40

我长时间面对同样的问题,但似乎什么都没用。突然间,VS Code在通知提示中向我建议了以下操作:

我们注意到您正在使用conda环境。如果您在集成终端中遇到问题,我们建议您让Python扩展在您的用户设置中将"terminal.integrated.inheritEnv"更改为false。

我点击了,并解决了问题。您也可以在您的settings.json文件中手动进行如下设置:

  1. 按下Shift + Command + P打开命令面板。
  2. 输入settings.json并选择 `Preferences: Open Settings (JSON)
  3. 在JSON文件中添加键值对"terminal.integrated.inheritEnv": false
  4. 保存JSON文件

1
这里有一个类似的情况,但我必须从终端菜单中创建一个新的终端才能使其工作。退出VS Code,激活环境等都没有效果。更多细节请参见:https://code.visualstudio.com/docs/python/environments#_environments-and-terminal-windows - atlas_scoffed

33
  1. 在 Vscode 中按下 ctrl+` 打开终端。
  2. 然后在终端中输入:conda init
  3. 关闭并重新打开终端。
  4. 正常使用 Conda。

3
这对我很有效,是一个永久性的解决方案,并且解决了VS Code找不到conda的另一个问题。运行conda init的一个效果是将condabin文件夹添加到PATH中,这将把conda.bat放在路径上,但不包括python(参见@peter-c答案)。 - Simon Judd
2
运行conda init会打印出一些检查和最终的“没有更改”,但它确实为我解决了问题。我想没有什么需要改变的。 - Felício
2
在我看来,这是最好的方法。对于使用 QWERTZ(德国、奥地利等)键盘布局的人,请在第一步中用 ctrl+ ö 替换快捷键。 - Björn
如果你只是随便玩玩,这可能会在卸载miniconda/anaconda后产生意想不到的后果,要修复它,你可能需要调整注册表:https://dev59.com/m1EG5IYBdhLWcg3watBc - Aurimas Stands with Ukraine

20

在这里输入图片描述

当我将终端从PowerShell切换到cmd时,得到了帮助。


请确保在 Powershell 或 Cmd 下双重检查您的终端! - Hello-experts

7

我已经尝试了大多数解决此问题的方法,但这些方法都没有奏效。按照 Sabito 錆兎 在他们的答案中提到的步骤mentioned in their answer,我最终解决了这个问题。

解决方案1:

  1. ctrl+shift+p

  2. 输入terminal: select default profile

  3. 选择命令提示符

    Image for 'choose Command Prompt'

  4. 打开新终端,就可以使用cmd执行操作。

另一种更改默认终端的方法是(以防您忘记命令):

  1. 在终端面板的右上角,点击 + (启动配置文件)
  2. 选择默认配置文件
  3. 选择你想要的 这样,您还可以打开配置终端设置

解决方案2:

  1. Do what Sabito 錆兎 said in their answer.

  2. ctrl+shift+p

  3. Type Python: Select Interpreter

  4. Choose which env in conda you need. You can also select on the bottom panel.

  5. Unnecessary step: in vscode-settings.json, make sure that if this line exists then the argument is true:

    "python.terminal.activateEnvironment": true,
    

    Now, vscode will automatically change your env in your terminal according to your choice, like this:

    CMD

    When I choose base:conda, I open a new terminal. In the console, it shows

    F:\GitHub\t>E:/Anaconda/Install/Scripts/activate 
    (base) F:\GitHub\t>conda activate base 
    (base) F:\GitHub\t>
    

    When I choose python3.8:condait shows

    F:\GitHub\t>E:/Anaconda/Install/Scripts/activate 
    (base) F:\GitHub\t>conda activate python3.8 
    (python3.8) F:\GitHub\t>
    

    PowerShell

    When I choose python3.8:conda. it shows

    (base) PS F:\GitHub\t> conda activate python3.8 
    (python3.8) PS F:\GitHub\t>
    

    When I choose base:conda, it shows

    (base) PS F:\GitHub\t> conda activate base  
    (base) PS  F:\GitHub\t>
    

3
激活vs code中的anaconda虚拟环境
  1. 进入菜单栏,点击终端。
  2. 输入:conda init
  3. 关闭此终端并打开一个新的终端
  4. 在新的终端窗口中,输入conda info --envs
    (您的conda虚拟环境应该在列表中)
  5. 输入conda activate name_of_venv

4
如果终端未正确配置,命令conda init将无法正常工作,因为conda不在搜索路径中。在我的系统中,它位于C:\Users\<user ID>\Anaconda3\Scripts中。因此,您可能需要使用C:\Users\<user ID>\Anaconda3\Scripts\conda init - mherzog

3
  1. 类型:conda init
  2. 切换到cmd终端,因为shell终端会出现问题
  3. 享受吧

在vscode中对我有效


当Conda环境没有被默认检测到时,我尝试了这个方法,将其手动添加到Python环境扩展的全局文件夹中。使用PowerShell也可以运行Conda init命令,但我选择不使用这种方法,因为我不想让conda一直处于激活状态。 - undefined

1

如果conda init失败,可能不仅仅是conda在搜索路径中缺失的问题。在我的情况下,这是因为PowerShell没有权限加载profile.ps1,请参见未将项识别为 cmdlet 的名称 'conda'

在这种情况下,如果您还没有这样做,请并行安装PowerShell 7PowerShell 5,并填写C:\Users\USER\Documents\PowerShell\profile.ps1

#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
(& "C:\Users\USER\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
#endregion

enter image description here

然后将新的PowerShell 7终端添加到vscode中,参见如何将anaconda powershell添加到vscode?
终端菜单:

enter image description here

而且每次打开 PowerShell 7 时,conda init 和所选Python解释器环境的激活将自动运行,并在vscode状态栏中显示。


1
这对我有用,但我运行了conda init命令,它更新了PowerShell配置文件。 - undefined

1

虚拟环境可以在VSCode终端中激活,但Python版本没有切换。

解决方案是在VSCode中选择“bash”,一切都会正常。


我认为你的答案与这个是一样的。 - Sabito stands with Ukraine

1
这似乎是因为Anaconda安装建议不更改Windows PATH以引用Anaconda,因为它可能会与其他安装发生冲突,当我的PATH变量被修改时,我没有遇到任何问题。看起来像VS Code(或最可能的Python扩展)仍然无法正确地激活Anaconda本身。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接