很多Python/机器学习初学者可能刚开始使用conda时会犯这个错误,那就是直接在base环境下面执行conda install
或pip install
,
这样会导致在错误使用较长时间后,base环境下会堆积大量包,
这也体现了conda install
的弊端,包装多了分析相互解决屎山依赖的时候就会花费巨量时间。
笔者就是在用了几年后,发现以前的tensorflow/torch
全装在了base环境下,想重新装一个包搁那Solving environment: \
半个小时,查了半天中文互联网没找到解决方案,在外网看到方案,遂搬运一下。
原贴 How to reset anaconda root environment
conda list --revisions #查看历史版本
使用
conda install --rev 1
恢复到古早版本(或者 rev 0)
所以正确使用conda的方法应该是,使用conda管理虚拟环境
conda create -n myenv python=3.9
按需使用conda安装tensorflow/torch之类依赖麻烦的包
conda安装不上的一律用pip安装
缺少某个具体特定包的时候一律使用pip安装
conda install
以及pip install
(在激活conda环境中使用的pip) package 都可以在 current_env/lib/site-packages
找到
conda有严格的检查机制,它会保证你当前装的package安装好之后能work,但是,它只检查用conda安装过的package。
例如,你新安装的package会依赖numpy
,不过你已经安装numpy(1.19.2)
,但是用pip安装的,不好意思,它会认为你没安装,然后用conda再安装一个依赖版本的numpy(1.18.5)
。这个时候,两个numpy可能就打架了。并且你pip list与conda list显示的numpy版本可能不一致,结果不知道最后运行程序的时候调用了哪个版本的numpy。
这个时候,uninstall可能也卸载不干净,卸了一个还有一个,最后还可能一直list有却是一个空壳。这个时候,只能找到anaconda的lib/site-packages/numpy
, 手动删掉它!
pip安装时既检查conda安装的package,也检查pip安装的package。不过,它只负责要什么装什么,不负责能不能把装的一堆packages打通,可能装好不work 😦。
另外conda clean --all
命令可以帮助你清理掉一些无用的文件,包括缓存包、索引缓存、旧的日志文件和未使用的环境等,从而恢复 conda 环境的一部分“新状态”,建议多多使用。