如何在PowerShell中激活Conda环境?

72

版本 Anaconda 4.8.3

我不能做的事情:
我无法从PowerShell中激活任何环境。 conda activate base

我能做的事情:

conda env list conda create -n xxx conda remove -n xxx

我尝试了很多解决方案,但它们都没有用:

  1. conda init powershell
    restart powershell
    conda activate

  2. conda update -n base conda 然后重新执行1

  3. conda install -n root -c pscondaenvs pscondaenvs
    Set-ExecutionPolicy RemoteSigned
    运行 activate base

运行conda activate的结果


1
你在尝试运行 conda init 命令时是否使用管理员权限运行 Powershell?没有出现任何错误吗? - AMC
是的,我尝试了管理员和非管理员 PowerShell,结果是一样的。“没有变化 <某些 .exe 和 .bat 文件的路径>” @AMC - Z Chen
请查看*为什么在提问时不上传代码/错误的图片?(例如,"图片应该只用于说明无法通过其他方式清楚表达的问题,例如提供用户界面的截图。"*)并做正确的事情。提前感谢您的帮助。 - undefined
8个回答

96

您不需要管理员权限。

在Windows上安装Anaconda或Miniconda后,从“开始”菜单中打开Anaconda Powershell提示

或者,如果您没有看到它,请假设您已经安装了miniconda3,路径为C:\miniconda3\4.9.2,则执行以下操作:

powershell -ExecutionPolicy ByPass -NoExit -Command "& 'C:\miniconda3\4.9.2\shell\condabin\conda-hook.ps1' ; conda activate 'C:\miniconda3\4.9.2' "

现在尝试:

conda init powershell

然后重新打开 PowerShell。

额外说明:默认情况下,conda会在打开终端时自动激活。如果您不希望这样,请使用以下命令禁用自动激活:

conda config --set auto_activate_base false

3
解决方案看起来很有前途,但实际上它没有绕过限制,在重启后(通过conda对文件进行完全修改)仍然无法正常工作。重启后相同的在第一行第三个字符处```(引用自动创建的ps脚本) - CheTesta
3
在这种情况下,您只需要解除名为profile.ps1的文件的阻止Unblock-File -Path .\profile.ps1(用完整路径替换相对路径)。请参阅Unblock-File cmdlet文档 - gcharbon
这在 Powershell 7 上能用吗?(在我的机器上似乎不行,但可能是由于其他原因)。 - LoneCodeRanger
这个解决方案有效,但是现在我删除了Anaconda环境,不知道如何取消每次启动时的自动激活。 - undefined
"禁用自动激活"的提示真的很有帮助。如果每次都自动激活conda,我就无法使用直接安装在我的机器上的Python。 - undefined

81

从开始菜单打开一个 Anaconda Powershell Prompt。 现在尝试:

conda init powershell

现在重新启动 PowerShell,如果在 PowerShell 中发现以下错误:

\WindowsPowerShell\profile.ps1 因此系统上禁用运行脚本而无法加载。有关更多信息,请参见 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。在第 1 行第 3 个字符处。

然后更改执行策略。在 PowerShell 中键入以下代码:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

要查找更多关于执行策略的信息,请访问此链接


26
没有管理员权限:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 的意思是:在没有管理员权限的情况下,将执行策略设置为“RemoteSigned”,并将其应用到当前用户。 - Winand
这是最好的答案,带有@Winand的评论。解决了我在VS Code的集成终端中遇到的问题。 - Matt

27
这是我的更简单的解决方案,适用于Anaconda、Miniconda甚至Miniforge:
  1. 打开PowerShell并浏览到你的Conda安装目录中的condabin文件夹,例如:C:\Users\<username>\anaconda3\condabin
  2. 在该文件夹中运行./conda init powershell,然后重新打开PowerShell。
  3. 请注意:如果遇到ps1 cannot be loaded because running scripts is disabled on this system的错误,请以管理员身份运行PowerShell,并输入以下命令:Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  4. 重新启动PowerShell,享受吧!

3
哇,经过尝试多种方法后,这个对我起作用了。 - Deepak Saini
3
这是关于此事的最佳且最简单的答案。我在我的机器上安装了miniconda3,它运行得非常好。感谢分享。 - theAfricanQuant

9

当您使用Anaconda或Miniconda时,在Anacondaprompt中输入:

conda init powershell

4
为了在 Powershell 上激活 conda,我只需执行以下命令:
C:\Users\<username>\anaconda3\shell\condabin\conda-hook.ps1

那么我就可以在不需要重新启动Powershell的情况下查看所有环境。

conda env list
conda activate base

所以你只需要运行conda-hook.ps1脚本。

3

遇到了同样的问题。诀窍在于确保环境变量包含在Windows Powershell的PATH变量中。要查看PATH变量,请在powershell中输入以下内容:

$env:Path.split(';')

如果您想要的环境没有显示在输出列表中,例如 ..... ..... ..../envs/yourEnv/... .....
请在命令提示符上运行以下命令:
conda init powershell

接着重新启动_Anaconda Powershell,然后执行以下步骤:

conda activate yourEnv

希望现在conda提示符应该显示您想要的环境。

3
为了解决不改变PowerShell安全策略的问题,您需要使用PowerShell 7。 PowerShell 7 可以让您使用 \WindowsPowerShell\profile.ps1 文件作为启动脚本,并具有默认(受限)安全策略设置。在 Windows 10 上,默认情况下(截至2022年8月14日),Windows PowerShell 版本为5.x。

使用以下命令检查您的PowerShell版本:

$PSVersionTable

如果你仍在使用powershell 5,请从Windows商店安装powershell,这将在powershell 5旁边安装powershell 7。它可能被称为“Powershell”而不是“Windows Powershell”。或者如果你不能使用Windows商店,请请求IT帮助你安装。在新的powershell中再次检查版本。
之后,我们可以按照prashant的答案进行操作:
打开Anaconda提示符并运行。
conda init powershell

为了防止conda默认启动,请运行以下命令:

运行

conda config --set auto_activate_base false

0

& 'C:\ProgramData\Miniconda3\shell\condabin\conda-hook.ps1'; conda activate 'C:\ProgramData\Miniconda3'

这是我电脑上的Anaconda Powershell Prompt (Miniconda3).lnk中找到的命令。

在我的电脑上,我可以通过执行这两个命令进入环境。


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