conda重置或恢复base环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了conda重置或恢复base环境相关的知识,希望对你有一定的参考价值。

参考技术A 有时候可能会不小心在base中安装各种包,导致冲突会问题。
那么还可以通过以下的方式来恢复到原来的状态。

第一条命令可以看到不同版本的历史。
第二条命令的0代表要恢复到的版本

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

【中文标题】conda:从基础/根环境中删除所有已安装的软件包【英文标题】:conda: remove all installed packages from base/root environment 【发布时间】:2019-03-20 16:22:54 【问题描述】:

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 环境中卸载所有已安装的软件包?

【问题讨论】:

"conda uninstall -n base --all" 应该可以完成这项工作。您是否尝试在环境停用时运行该命令? %deactivate base %conda uninstall -n base --all @TinaIris 不,这没有帮助 - 相同的错误消息。 遇到了同样的问题。我的教训:我再也不会使用基础环境了。 核选项是删除~/anaconda~/miniconda并重新安装conda。 少核选项 - 重命名您的~/miniconda 文件夹,重新安装conda,然后将您想要保留的环境从重命名的旧文件夹复制到新重新安装的文件夹中。这样你就有了全新的base env,但你不需要重新安装你的其他 env。 然后你可以删除重命名的备份文件夹。 【参考方案1】:

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

不是这样,而是您不能删除 base 环境,这就是 --all 标志所做的。您无法卸载 base 中的所有 包,因为这是 conda 可执行文件所在的位置。相反,您要做的是卸载所有用户安装的软件包。

完全还原(不推荐)

一种方法是在安装任何其他软件包之前将您的环境恢复到原始状态:

# Not generally recommended!
conda install --revision 0

请注意多个用户报告这破坏了他们的 Conda 安装。我绝对不会在您已经安装了很长时间或有很多修订版的安装上运行它。

最重要的是:始终审查基础env中的拟议交易!这就是 Conda 所在的地方,不幸的是,防止破坏安装的保护措施并不全面。

如果您真的想要一个全新的开始,请将您的环境导出到 YAML 并重新安装新的 Miniconda。

部分还原

您还可以寻找其他以前的状态可能不是回归,但仍然摆脱您认为不必要地积累的任何包。

conda list -n base -r

最后,您可能需要立即升级 conda,因为它还会恢复对基本软件包的任何更新。


错误,天哪!

虽然上面是还原的正确方法,但我遇到了错误:

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

顺便说一句,这让我很担心,因为这似乎表明我两年前的 Conda 环境状态不再可以从上游渠道的状态重现。

在这种情况下,除了将所有修订版 0 包与您当前的安装进行比较,然后卸载差异之外,我不知道解决此问题的干净方法。但同样,全新安装 Miniconda 似乎是一个更好的解决方案。

一般来说,我发现将 env 视为不可变的并在 base 中尽可能少地安装是使用 Conda 最安全、最可靠的方式。

【讨论】:

我在恢复到修订版 0 时也遇到了一堆错误。我最终:备份重新安装,然后从备份中复制我的 etcenvs 目录。 小心conda install --revision 0 我试过这个,它恢复了我所有的环境,而不仅仅是基础!对我来说不是什么大问题,但如果你没有备份可能会是灾难性的。 我在基地是的。不过虽然恢复得很好,但也需要一段时间,所以我不想再犯了!我还应该举报吗? 谢谢@merv。实际上,有一个过程here 可以从降级的 conda 情况中解脱出来,但我在这里留下了评论以指出这个陷阱。应该有比install --revision 方法更好的方法来删除所有包。 @merv 感谢您的回复。最后只是杀死了我的整个anaconda 安装并重新安装(miniconda)。它现在更有用了——过去在 solving environment 步骤之前需要大约 5 分钟;现在它大约是 5 毫秒。【参考方案2】:

我遇到了和你一样的问题,我就是这样做的:

    备份我的 conda-env:

    我。激活我想要保留的环境,例如'ml'

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

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

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

【讨论】:

如果您的环境中的包不再存在于 repos/channels 中,这可能会失败。我改为重命名我的 miniconda 文件夹(例如 miniconda_old),然后你会做你的事(我重新安装了 miniconda,因为我设法完全搞砸了),然后将环境从 miniconda_old 复制到新安装的 miniconda 中。然后环境工作正常。【参考方案3】:

我使用以下命令删除所有已安装的包(不是环境):

$ conda remove `conda list|awk 'print $1'|tr '\n' ' '`

【讨论】:

以上是关于conda重置或恢复base环境的主要内容,如果未能解决你的问题,请参考以下文章

VS怎么重置设置开发环境

如何将文件重置或恢复到特定版本?

GitHub 恢复或重置? [复制]

GDB 和 OpenOCD - 调试结束后重置或恢复

如何恢复已删除的环境变量?

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