彭某的技术折腾笔记

彭某的技术折腾笔记

Anaconda 环境更改回退方法

61
2023-07-14

Anaconda 环境更改回退方法

2023年7月14日

摘要

在使用 Anaconda 时,时常会不小心装上一些不应该装的库,导致冲突,此时如果直接删除环境重装的话,很容易漏装或者忘记之前装过哪些库。更常见的问题是,在安装某些库时忘记了切换到虚拟环境,导致 base 环境里经常会多一些乱七八糟的库,而此时如果重装 Anaconda 又显得过于小题大做。本文提供了一种方法用以回退对环境的更改。

粗暴的办法

在这里还是想提一下最粗暴的办法,就是删掉当前环境重新创建。首先关闭当前虚拟环境:

conda deactivate

然后删掉这个需要重装的环境:

conda uninstall -n ENV_NAME --all

接下来重新创建环境:

conda install -n ENV_NAME

再激活环境:

conda activate ENV_NAME

并重装需要的包。

然而对于不小心装乱的 base 环境,我们就并不能直接删除 base 再重新创建了。当然,卸载 Anaconda 整个全部重装也是个充满暴力美学的方案,不过一般不推荐。

优雅的回退

查找更改记录

Anaconda 给用户提供了一个命令可以查找环境的历史更改记录:

conda list --revisions

此命令可以列出当前所在环境的历史更改记录,每一条更改记录后面我们可以找到一些类似 (rev 0) 的标记,我们可以通过这个标记来进行回溯。

当然我们也可以在任意一个环境中查看别的环境的历史记录,只需要用以下命令提供它的名字:

conda list -n ENV_NAME -r

可以得到一样的结果。

回溯更改

在经过上一个步骤的查找过后,假如我们看到 rev N 是我们想回溯的版本(其中 N 代表一个数字版本号),那么我们可以进入需要回溯的虚拟环境,然后执行以下命令:

conda install --revision N

即可回到指定的历史版本。

限制条件

Anaconda 只会在调用 自身的 conda 命令安装或移除库的时候时才会更新内部数据库,记录更改。然而,如果在 Anaconda 虚拟环境中使用 pip 或者手动安装了别的库,等于绕开了 Anaconda 的监管,这种境况下的更改将不会在历史记录中体现,也无法回溯。

  • 0