pip install 和 conda install 的区别是什么?

2020-12-15 17:57:53 +08:00
 fanqieipnet
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 不完全重叠,有些包只能通过其中一个装。
779 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735740

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX