别用conda了,可以用mamba。在google搜索mamba或者miniforge,去github下载release安装。它是conda的平替,但是速度快了好多,输出信息也更丰富。
可以只用mamba安装包,也可以用mamba切换环境,用pip安装包。pip的成功率高很多,速度也很快,建议还是用pip算了......
他俩的区别这个回答写的很好
作者:月踏
链接:https://www.zhihu.com/question/395145313/answer/2449421755
来源:知乎
- conda install xxx:这种方式安装的库都会放在
mambaforge/pkgs
目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。- pip install xxx:分两种情况,一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到
mambaforge/envs/current_env/lib/python3.x/site-packages
文件夹中(base环境会安在mambaforge/Lib/site-packages
),如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages
文件夹中这里引出一个问题:conda和pip安装同一个xxx库情况下,conda环境下python代码中import xxx时,谁安装的xxx优先级较高会被import,这个问题通过下面这条命令可以解决:
python -m site
在我的机器上,会有类似下面输出:
(py3.6) [~/anaconda3/pkgs @ s64]$ python -m site sys.path = [ '~/anaconda3/pkgs', '~/anaconda3/envs/py3.6/lib/python36.zip', '~/anaconda3/envs/py3.6/lib/python3.6', '~/anaconda3/envs/py3.6/lib/python3.6/lib-dynload', '~/anaconda3/envs/py3.6/lib/python3.6/site-packages', ] USER_BASE: '~/.local' (exists) USER_SITE: '~/.local/lib/python3.6/site-packages' (doesn't exist) ENABLE_USER_SITE: True
这里的USER_BASE 和USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径,从上面的输出可以看到,
import xxx
时,先找的是anaconda3/pkgs
目录,所以conda安装的包会被import进来。
作者:HexUp
链接:https://www.zhihu.com/question/395145313/answer/1230725052
来源:知乎
pip是用来安装python包的,安装的是python wheel或者源代码的包。从源码安装的时候需要有编译器的支持,pip也不会去支持python语言之外的依赖项。
conda是用来安装conda package,虽然大部分conda包是python的,但它支持了不少非python语言写的依赖项,比如mkl cuda这种c c++写的包。然后,conda安装的都是编译好的二进制包,不需要你自己编译。所以,pip有时候系统环境没有某个编译器可能会失败,conda不会。这导致了conda装东西的体积一般比较大,尤其是mkl这种,动不动几百兆甚至一G多。
当mamba下载失败
1. opencv从conda安装,vscode代码补全会有bug,用pip就好了
2. clash代理直接开全局,可以用迅雷加速下载 。规则模式迅雷偶尔识别不到。mamba规则和全局代理都ok,但是pip一定要命令行指明代理“--proxy="http://IP:port",ip在“设置”,port在clash首页
3. 我在用官网命令,从mamba安装cuda 11.7的torch时碰到了大量问题:
一开始报错“另一个程序正在使用此文件,进程无法访问”,删除之后 nvidia/noarch的源又访问超时,把所有下载的都删除了手动安装之后又卡在了 “Looking for ['pytorch']” 这步。
最后卸载重安mambaforge,然后安装失败的cuda包直接参考这篇文章手动安装,中间所有warning的包一律删除,解决了问题
win10下,conda安装GPU版pytorch最新版本:cuda11.7,遇到的坑 - FSWLY - 博客园
实际上,conda管这些下载下来用于安装的tar.bz2叫做tarball,当换系统时,把这些难以下载的包复制过去手动用“mamba install --use-local path”也可以