conda:从基本/根环境中删除所有已安装的软件包

时间:2018-10-16 07:42:23

标签: python conda miniconda

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

我在base的conda环境中安装了一堆机器学习软件包。

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

我尝试过:

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

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

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

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

CondaEnvironmentError: cannot remove root environment,
       add -n NAME or -p PREFIX option

好吧,我将使用-p ...

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

CondaEnvironmentError: cannot remove root environment,
       add -n NAME or -p PREFIX option

如何在baseroot环境中卸载所有已安装的软件包?

3 个答案:

答案 0 :(得分:10)

  

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

不是那样,而是您不能删除 base 环境,这是--all标志的作用。您不能卸载 base 中的 all 软件包,因为这是conda可执行文件所在的位置。而是要卸载所有用户安装的软件包。一种方法是在安装任何用户软件包之前将环境恢复到原始状态:

> conda install --revision 0

您还可以查找其他以前的状态,这些状态可能不算回归,但仍然可以摆脱不必要的任何软件包。

> conda list -n base -r

最后,您可能需要立即升级conda,因为它还会将所有更新都还原到基本软件包中。


错误,我的天!

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

  

CondaRevisionError:由于:: contextlib2-0.5.3-py35_0不在存储数据中,因此无法还原为0。

顺便说一句,这让我感到担心,因为它似乎表明两年前我的conda环境状态无法从上游渠道状态重现。我一直在假设这种类型的可重现性是内置的。

无论如何,除了将所有修订版0软件包与当前安装版本进行比较,然后卸载差异之外,我不知道一种解决此问题的干净方法。

答案 1 :(得分:1)

我遇到了与您同样的问题,这就是我所做的:

  1. 备份我的conda-env:

    i。激活我要保留的环境,例如“ ml”

    ii。输入conda-env export > /path/to/save/file/environment.yml

  2. 激活base并将基本环境恢复为初始状态:键入conda install --revision 0,这将需要一些时间...(此命令未恢复我所有的环境,仅恢复了基本环境)< / p>

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

答案 2 :(得分:-2)

我通过这样做解决了这个问题

python3 -m ipykernel安装--user