PyCharm终端无法激活conda环境

41

我在Windows默认位置创建了一个conda环境,路径为C:\ProgramData\Anaconda2\envs\myenv,并且按照建议将conda脚本和可执行文件从%PATH%环境变量中排除。

我在PyCharm中打开一个项目,并将Python解释器指向C:\ProgramData\Anaconda2\envs\myenv\python.exe,在Python控制台、运行环境和调试模式下,PyCharm与该环境的配合效果良好。

但是,在打开终端时,该环境未被激活(我确保选择了激活环境的复选框)。明确一下 - 当我对virtualenv进行相同操作时,终端可以成功激活该环境。

以下是我尝试但未能成功的几个方法:

  • 将activate脚本从anaconda文件夹复制到环境文件夹中
  • 将activate脚本从anaconda文件夹复制到环境下的Scripts文件夹中
  • 从virtualenv中复制一个激活脚本(一个相同的脚本可以激活环境)
  • 将anaconda文件夹添加到路径中

这些方法都没有奏效。我可以手动激活环境,但如何在终端自动激活?

16个回答

42

我遇到了同样的问题,并使用了这个解决方案。

  1. 进入 文件 -> 设置 -> 工具 -> 终端

  2. cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat your_environment_name 替换 Shell path 中的值。

如果我在 C:\Anaconda3 安装了 Anaconda 并且有一个名为 myenv 的环境,那么我的设置将如下所示:

终端工具应用程序设置


8
谢谢!这是一个很好的解决方法,但如果我有多个测试环境,它将无法使用。当然,在Linux/Mac上需要进行一些微小的更改。 - pipefish
1
我需要做更多的事情才能让它工作吗?这会在打开终端时激活环境,但在尝试使用“运行配置”时不起作用。 - Daniel
@Daniel 你需要配置项目解释器。更改shell路径不会影响你的运行/调试配置,这是一个单独的设置。 - darksinge
如果我在Pycharm中同时拥有conda envvirtualenv env,我该怎么办?它似乎完全没有识别virtualenv env - wawawa
它会工作的!Shell路径:powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1' - RedEyed
通过@Roald的下面的回答和这个回答,我在项目设置中添加了环境变量CONDA_ENV=my_venv_name并将Shell路径更改为cmd.exe "/K" C:\Anaconda3\Scripts\activate.bat %CONDA_ENV%。这是为了在每个具有不同虚拟环境的项目终端中设置虚拟环境。如果您的项目使用相同的虚拟环境,则不需要此操作。 - cointreau

10

如果有人想要针对Linux进行设置,以下是如何完成此操作的。在您的主目录下创建一个名为.pycharmrc 的文件。打开该文件并添加以下内容。

source ~/.bashrc
source ~/anaconda3/bin/activate your_env_name 

现在打开Pycharm,选择文件 > 设置 > 工具 > 终端 > Shell路径,将您的Shell路径替换为/bin/bash --rcfile ~/.pycharmrc

现在每当您打开终端时,指定的conda环境将会被激活。


谢谢!这在PyCharm 2020.2.3 (PopOS! 20.04 LTS)上运行得很好。 - Saurav
适用于Mac OSX上的2021.3.2 CE。 - astrochun

9

这似乎是一个已知的问题


2
FYI:该问题已在2019.1版本中修复。 - Bernhard Barker
3
尚未修复/重新铺设,在2021.1.3版本中。 - Anmol Deep

8

在Windows & Pycharm 2022.1以及conda环境中遇到了问题。

我的解决办法是将默认的Powershell更改为cmd shell。

  1. 打开 设置 > 工具 > 终端
  2. 将Shell路径从"powershell.exe"更改为"cmd.exe" enter image description here
  3. 确保 "激活virtualenv" 复选框被勾选。

新的终端会以配置好的环境正确地打开。


在2022.2版本上对我不起作用。 - shamalaia
我在2022.3.2 Professional版本上遇到了这个问题,它起作用了!为什么没有将其标记为已接受的解决方案? - Ignacio Hernández
我在2022年3月2日的专业版上遇到了这个问题,而且解决了!为什么这个解决方案没有被标记为被接受的解决方案呢? - undefined

7

Windows & Powershell

我使用这里的部分回答和这篇答案,在Windows上使用Powershell得出了以下解决方案:

  1. 进入文件 > 设置 > 终端
  2. 对于每个项目,在“环境变量”下添加以下内容。在每个项目中,你需要将venv_name更改为你虚拟环境的名称。
    • CONDA_ENV=venv_name
  3. 使用以下命令设置shell路径。你不需要为每个项目更改它,因为它使用了你在上一步声明的环境变量。只需编辑到Anaconda/Miniconda安装路径即可。
    • powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\path\to\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate $env:CONDA_ENV "

如果你想在Windows上使用Powershell,并且希望立即激活项目特定的虚拟环境,那么这可能是最佳选择。 - su79eu7k

7

Windows解决方案

打开 设置 -> 工具 -> 终端
Shell路径 设置为:

  1. 对于 powershell (我建议使用此选项):
    powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1'"
  2. 对于 cmd.exe:
    cmd.exe "C:\tools\miniconda3\Scripts\activate.bat"

PyCharm将自动在终端中更改环境
PS: 我正在使用我的miniconda路径,所以请用您自己的路径进行替换


这帮助了我入门。使用这个,我想出了一个通用的工作解决方案。请参见下面 - Roald
1
我尝试了第一个解决方案,但在我的情况下效果不佳,但第二个解决方案完美地工作,即使在PyCharm中更改环境也是如此,非常感谢! - MarinerZZ
1
@MarinerZZ,第一个解决方案中有一个错别字,已经修复。 - RedEyed

6
以下是适用于MacOS或Linux用户的解决方案:
首先,在您的shell上下文中添加以下代码到您的~/.bash_profile~/.zshrc文件中。请确保在conda已被初始化之后再加入代码:
##### Activate conda env ######
[[ -n $CONDA_ENV ]] && conda activate $CONDA_ENV

然后进入PyCharm设置,找到Tools -> Terminal,在项目设置中,将CONDA_ENV=yourenv添加到您的环境变量中。

yourenv是特定项目中来自您的conda的环境名称。


1
这是一个很好的想法,但是:(1)首先我必须运行conda init bash一次(2)在建议的行之前,我必须添加conda deactivate,否则conda默认激活“base”环境(3)-n不应该是必要的。 - Asclepius
1
这在我的Windows 10上完美地运行,PyCharm的终端指向GitBash。 - Jason
在 PowerShell 中,将 conda activate $env:CONDA_ENV 添加到您的 profile.ps1 中以激活 conda 环境。 - tuomastik

3

这是一个适用于Windows的工作解决方案* Pycharm版本: 2022.1.3 Windows: 11

打开Anaconda提示符并输入 conda init powershell 注意powershell配置文件的路径(C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1)并复制它。

检索conda-hook powershell配置文件

在PyCharm中打开项目,按Ctrl+Alt+S打开设置并导航到“工具”>“终端”。在右侧的环境变量文本字段中,设置一个新的环境变量为 CONDA_ENV=your_conda_env_name 请注意,您必须正确说明conda环境名称。然后在shell路径中键入以下内容。

powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'path/to/conda-hook.ps1' ; conda activate $env:CONDA_ENV "

例如:

powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1' ; conda activate $env:CONDA_ENV "

设置环境变量和shell路径

应用并关闭设置,如果您已打开了任何终端,请关闭所有终端,并尝试重新打开终端。所提到的conda环境应该会自动激活。干杯!


2
扩展darksinge的答案以适应conda>=4.4和多个环境,如果1)你的conda环境和项目共享相同的名称,并且2)你将项目保存在相同的目录中,那么您可以使用此解决方法:cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat C:\path\to\Anaconda3 & activate %cd:C:\path\to\project\parent\directory\=%。最后一部分(%cd:C:\path\to\project\parent\directory\=%)应从当前工作目录推断出项目名称。例如,我将我的项目保存在Z:\中,所以%cd:Z:\=%返回我的项目名称。您可以阅读更多信息:如何在Windows批处理文件中替换子字符串

我目前正在PyCharm中搜索一个特殊的名称/变量,以便在设置中使用项目名称(例如cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat C:\path\to\Anaconda3 & activate $project_name),但尚未找到。 - LoneWanderer
1
谢谢,这给了我一个想法去尝试在Git Bash中使用"C:\Program Files\Git\bin\bash.exe" --login && conda activate myenv,并且它起作用了! - Justin Harris

1
发现了一个解决方案。问题是我们一直在Pycharm中创建conda环境,同时启动一个新项目。
这是在以下位置创建的:/Users/<username>/.conda/envs/<env-name>
例如:/Users/taponidhi/.conda/envs/py38
相反,请使用终端创建环境conda create --name py38
这将在/opt/anaconda3/envs/中创建环境。
之后,在启动新项目时,从现有环境中选择此环境。一切正常工作。

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