conda:从base/root环境中删除所有已安装的软件包

Tom*_*ale 17 python conda miniconda

TL:DR:如何从中删除所有已安装的软件包base

我在baseconda环境中安装了一堆机器学习包.

我现在已经创建了一个ml机器学习环境,并希望base通过删除那里安装的所有软件包来重置我的环境.

我试过了:

% activate base
% conda uninstall -n base --all

CondaEnvironmentError: cannot remove current environment. deactivate and run conda remove again
Run Code Online (Sandbox Code Playgroud)

显然,我无法从当前环境中删除包(?!),所以让我们先切换到我的ml环境:

% source activate ml
% conda uninstall -n base --all

CondaEnvironmentError: cannot remove root environment,
       add -n NAME or -p PREFIX option
Run Code Online (Sandbox Code Playgroud)

好吧,我会用的-p......

% conda uninstall -p ~/.local/share/miniconda3 --all

CondaEnvironmentError: cannot remove root environment,
       add -n NAME or -p PREFIX option
Run Code Online (Sandbox Code Playgroud)

如何卸载在所有已安装包baseroot环境?

mer*_*erv 18

显然,我无法从当前环境中删除包(?!)

它不是那样,而是你不能删除基本环境,这就是--all旗帜的作用.您无法卸载base中的所有软件包,因为这是conda可执行文件所在的位置.相反,您要做的是卸载所有用户安装的软件包.一种方法是在安装任何用户包之前将环境恢复到原始状态:

> conda install --revision 0
Run Code Online (Sandbox Code Playgroud)

您还可以查找可能不那么回归的其他先前状态,但仍然可以删除您认为已经不必要累积的任何包.

> conda list -n base -r

最后,您可能希望立即升级conda,因为它还将还原对基础包的任何更新.


错误,哦,我的!

虽然以上是真正正确的方法,但我遇到了错误:

CondaRevisionError:无法恢复为0,因为:: contextlib2-0.5.3-py35_0不在repodata中.

顺便说一句,这种担心让我担心,因为它似乎表明我两年前的康茄达环境的状态不再可以从上游渠道的状态再现出来.我一直在假设这种可重复性是内置的.

无论如何,除了将所有版本0软件包与当前安装进行比较然后卸载差异之外,我不知道如何解决这个问题.

  • 小心`conda install --revision 0` 我试过了,它恢复了我所有的环境,而不仅仅是基础!对我来说不是一个大问题,但如果你没有备份可能是灾难性的。 (5认同)
  • @merv 感谢您的回复。最终只是杀死了我的整个“anaconda”安装并重新安装(“miniconda”)。现在它的可用性大大提高了——过去“解决环境问题”步骤需要大约 5 分钟;现在大约是 5 毫秒。 (3认同)
  • 谢谢@merv。实际上,这里有一个过程(/sf/ask/3817989451/)为了摆脱降级的 conda 情况,但我在这里留下评论来指出这个陷阱。应该有比这个“install --revision”方法更好的方法来删除所有软件包。 (2认同)
  • 你提出了一个你不推荐的方法(修改),然后不给出推荐的方法。 (2认同)

小智 13

I had the same problem as you did, this is what I did:

  1. backup my conda-env:

    i. activate the env i want keep, such as 'ml'

    ii. type conda-env export > /path/to/save/file/environment.yml

  2. 激活base并将基础环境恢复为初始:键入conda install --revision 0,这应该需要一些时间......(这个命令没有恢复我所有的环境,只是基础环境)

  3. 加载您的 .yml 文件:键入 conda env create -f /path/to/save/file/environment.yml


Nic*_*nie 8

如果您只想从已删除的环境中删除仍缓存在 中的未使用的包base,请发出

conda clean -a -y 
Run Code Online (Sandbox Code Playgroud)

这清理了我的 74 GB base:)