这是一个创建于 1442 天前的主题,其中的信息可能已经有所发展或是发生改变。
pip install 和 conda install 的区别是什么?今天番茄加速就来分析下。
大部分情况下没什么区别。基本上,我更喜欢用 pip,因为国内用 pip 网速比 conda 快哈哈,即便是用了国内源的情况下。
正式一点地说,pip 和 conda 功能相似,但仍然有一些区别,conda 官方就有文章专门说这个:
pip 是用来安装 python 包的,安装的是 python wheel 或者源代码的包。从源码安装的时候需要有编译器的支持,pip 也不会去支持 python 语言之外的依赖项。
conda 是用来安装 conda package,虽然大部分 conda 包是 python 的,但它支持了不少非 python 语言写的依赖项,比如 mkl cuda 这种 c c++写的包。然后,conda 安装的都是编译好的二进制包,不需要你自己编译。所以,pip 有时候系统环境没有某个编译器可能会失败,conda 不会。这导致了 conda 装东西的体积一般比较大,尤其是 mkl 这种,动不动几百兆甚至一 G 多。
然后,conda 功能其实比 pip 更多。pip 几乎就是个安装包的软件,conda 是个环境管理的工具。conda 自己可以用来创建环境,pip 不能,需要依赖 virtualenv 之类的。意味着你能用 conda 安装 python 解释器,pip 不行。这一点我觉得是 conda 很有优势的地方,用 conda env 可以很轻松地管理很多个版本的 python,pip 不行。
然后是一些可能不太容易察觉的地方。conda 和 pip 对于环境依赖的处理不同,总体来讲,conda 比 pip 更加严格,conda 会检查当前环境下所有包之间的依赖关系,pip 可能对之前安装的包就不管了。这样做的话,conda 基本上安上了就能保证工作,pip 有时候可能装上了也不 work 。不过我个人感觉这个影响不大,毕竟主流包的支持都挺不错的,很少遇到 broken 的情况。这个区别也导致了安装的时候 conda 算依赖项的时间比 pip 多很多,而且重新安装的包也会更多(会选择更新旧包的版本)。
最后,pip 的包跟 conda 不完全重叠,有些包只能通过其中一个装。