显然,我无法从当前环境中删除包(?!)
不是这样,而是你无法删除base环境,这就是--all
flag 在这种情况下就可以了。你无法卸载all包在base因为那是conda
可执行的生命。相反,您可能想要做的是卸载所有用户安装的软件包。
完全恢复(不推荐)
执行此操作的一种方法是将您的环境恢复到安装任何其他软件包之前的原始状态:
# Not generally recommended!
conda install --revision 0
请注意多个用户报告这破坏了他们的 Conda 安装。我绝对不会在您已经安装了很长时间或进行了多次修订的安装上运行它。这并不是说修订版“0”本质上是不好的,而是恢复得太早可能是不好的。也就是说,修订版“1”、“2”等也可能非常旧并导致完全相同的问题。
最重要的是:始终审查拟议的交易 base env!这就是 Conda 生活的地方,不幸的是,防止破坏安装的保护措施并不全面。
如果你真的想要一个干净的开始,那么将你的环境导出到 YAML 并重新安装一个新的 Miniconda。
部分恢复
您还可以查找其他以前的状态,这些状态可能不会出现回归,但仍然可以删除您认为不必要积累的任何包。
conda list -n base -r
最后,您可能想要升级conda
之后,因为它还会恢复对基础包的任何更新。
错误,天啊!
虽然上面是正确的恢复方法,但我遇到了错误:
CondaRevisionError:无法恢复为 0,因为 ::contextlib2-0.5.3-py35_0 不在 repodata 中。
顺便说一句,这让我有些担心,因为它似乎表明两年前我的 Conda 环境的状态不再能够从上游通道的状态重现。
在这种情况下,除了将所有修订版 0 软件包与当前安装进行比较然后卸载差异之外,我不知道解决此问题的干净方法。但同样,全新安装 Miniconda 似乎是一个更好的解决方案。
一般来说,我发现将环境视为不可变并尽可能少地安装base是使用 Conda 最安全、最可靠的方式。