最近,偶然发现很多包都被安装到了base环境,我是有一个“洁癖”的人,这样我肯定受不了,何况 base 包越多,初始化的时候就要加载很多时间。

于是我就去搜索方案。

搜的尽是过去的一些解决办法,说什么 conda 没有提供重置base环境的方法啊,需要重装的话,我呸!

当然也搜到了 conda 回滚的方法:conda list --revisions,但是我发现这个方法也不是万能的。

如果 miniconda/anaconda 软件经过多次升级,那所谓的rev 0根本不是最初的形态。

在我的多方调教下,gpt 终于醒悟告诉我,可以批量清除 base 里面通过 pip 安装的包,这样就只剩下默认安装的 defaults 通道,我将处理完的版本和没有被污染的 base 环境进行对比,这个方法是真的对症,处理后非常干净。

如果有人也遇到我这样的问题,可以操作下面的步骤:

  1. 找出所有 pip 装进 base 的包(conda 会标记为 channel=pypi)
conda list --json > conda_list.json
python -c "import json; pkgs=json.load(open(r'conda_list.json','r',encoding='utf-8')); print('\n'.join(sorted({p['name'] for p in pkgs if p.get('channel')=='pypi'})))" > pip_pkgs.txt
type pip_pkgs.txt

注意:我认为这个办法是可以举一反三的,因为我恰好是通过 pip 安装的,而如果遇到conda list,仍然是可以对比channel进行卸载的!

  1. 批量卸载这些 pip 包
Get-Content "pip_pkgs.txt" | ForEach-Object { python -m pip uninstall -y $_ }

如果是 linux,可以让大模型进行转换,这里我就懒得添加了。