删除 Conda 环境

804

我想删除使用conda创建的某个环境。我该如何实现?假设我有一个活动的testenv环境。我按照文档尝试了以下操作:

$ conda env remove

CondaEnvironmentError: cannot remove current environment. deactivate and run conda remove again

然后我将其停用:

$ source deactivate

我尝试再次运行删除命令,但仍然遇到相同的错误。这里出了什么问题?


4
请确保以管理员身份运行终端,否则命令会成功执行但没有任何错误提示,但是环境变量将无法被移除。 - Krishna
20个回答

1196

你可能没有完全停用Conda环境 - 请记住,您需要使用的命令是conda deactivate(对于旧版本,请使用source deactivate)。因此,在尝试之前,最好启动一个新的shell并在其中激活该环境。然后再停用它。

您可以使用以下命令:

conda remove -n ENV_NAME --all

删除具有该名称的环境。 (--name 相当于 -n)

请注意,如果您选择,创建和删除环境时,您也可以使用 -p /path/to/env 来将环境放置在任何位置,而不是使用 -n ENV_NAME。它们不一定要存在于您的 conda 安装中。

更新,2019年1月30日:从 Conda 4.6 开始,conda activate 命令成为跨所有平台激活环境的新官方方式。这些更改在 this Anaconda 博客文章 中描述。

更新,2023年2月24日conda env 子命令已被弃用。现在,官方推荐的方法是使用 conda remove -n ENV_NAME --all。您可以使用 conda install -n base -c defaults conda 更新到最新版本(有时候需要指定新版本,例如 ... -c defaults conda=23.3.1)。


10
实际上,你也可以使用 conda deactivate 命令,它的效果是一样的。至少在版本 4.4.11 中是如此。 - renatodamas
2
在使用 conda env remove 后,为自己做个好事吧:运行以下命令 rm -rf ~/anaconda/envs/ENV_NAME(如果你使用的是默认的 Anaconda 安装位置)。 - rjurney
4
如果删除环境后仍有任何残留物,我想Anaconda团队会感激您提供一个错误报告。 - holdenweb
2
如果您创建了前缀,它也可以工作:conda env remove -p <<前缀路径>>。 - Cornea Valentin
2
如果你和我一样,删除conda环境以释放磁盘空间,请记得在删除环境后进行conda清理以删除缓存的软件包,例如:conda clean -a在执行之前,请在此处阅读更多信息:https://docs.conda.io/projects/conda/en/latest/commands/clean.html - tu_curious
显示剩余7条评论

281

确保你的环境没有激活,然后输入:

$ conda remove --name ENVIRONMENT --all

7
这就是我需要的信息。如果“conda env --help”能够提供这个信息就更好了。 - R. Schreurs
1
EnvironmentLocationNotFound: Not a conda environment: /home/user/.conda/envs/ENVIRONMENT - user924
4
我提出了一个有关更新帮助文本失败的漏洞问题,它被标记为初学者易处理的问题,因此有望得到修复。 - holdenweb
这个命令是在哪个conda版本中出现的?它在conda 4.14.0上无法工作。 - qqqqq

99

我使用的是官方文档中提到的方法:

conda remove --name myenv --all

或者只需使用conda env remove --name myenv

要验证环境已被移除,在您的终端窗口或Anaconda提示符中运行:

conda info --envs
显示的环境列表不应显示已删除的环境。 你的Anaconda3环境文件夹可能会列出一个空的已删除环境文件夹,例如:
/opt/anaconda3/envs

7
--all标志具体是做什么的?我找不到任何文档来解释。 - Johannes Wiesner

65

如果您在基地中:

(base) HP-Compaq-Elite-8300-CMT:~$ 

通过以下方法移除 env_name:

conda env remove -n env_name

如果您已经在 env_name 环境中:

(env_name) HP-Compaq-Elite-8300-CMT:~$ 

通过以下步骤取消激活并删除:

conda deactivate
conda env remove -n env_name

51

在我的Windows 10企业版操作系统中,这段代码可以正常工作:(假设环境为testenv)

conda env remove --name testenv

46

使用--prefix-p标志创建的环境必须使用-p标志 (而不是-n)进行删除。

例如:conda remove -p </filepath/myenvironment> --all,其中</filepath/myenvironment>是替换为环境的完整或相对路径。


36

总共有3种方法可以实现这个目标。假设您有一个名为 myenv 的环境,

  1. conda env remove --name myenv, -n--name的快捷方式。

  2. conda remove --name myenv --all

  3. 直接删除env文件夹(不推荐)。

  4. # list environments and their locations
    conda env list
    # or
    # conda info --envs
    
    # delete the folder listed
    rm -rf /Users/username/.local/share/conda/envs/myenv
    
    如果你想要删除环境而不进行提示以便你再次检查,请使用 -y ,它是--yes的缩写。(对于全局使用,请查看conda中的静默提示)
    conda env remove -n myenv -y
    conda remove -n myenv --all -y
    

    参考资料

    • conda env --help
    • conda remove --help

8
为什么不建议直接删除 env 文件夹?可能会出现哪些问题? - NoName
1
@NoName Conda提供了可挂钩的预解除链接事件包,该事件在包删除之前触发。直接删除将跳过此步骤。据我所知,它很少使用,主要管理环境内部的事物(例如,Jupyter 扩展将通过这些钩子从Jupyter实例中注销自己),因此删除所有内容不应该会破坏任何东西。但是,搜索结果显示一些包(例如与FSL相关的包)似乎在外部注册,这种情况下手动删除可能会留下悬空引用。 - merv

32
  1. 先停用您想要删除的环境。

  2. 然后键入以下代码:

    conda env remove -n <your environment name>

  3. 要确保已删除它,可以使用以下代码。

    conda info --envs 或者 conda env list

4. 如果您想连同安装的软件包一起删除所有依赖项,则可以使用:

conda remove -n <environment name> --all

环境名称是什么?我该从哪里获取它,请不要只发布一半的信息。您的问题应该完整。 - Haseeb Mir

19

你可以尝试以下步骤:打开Anaconda命令提示符并输入

conda remove --name myenv --all

这将删除整个环境。

更多阅读: docs.conda.io > 管理环境


17

删除整个conda环境:

conda remove --name YOUR_CONDA_ENV_NAME --all


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