V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fanqieipnet
V2EX  ›  推广

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

  •  
  •   fanqieipnet · 2020-12-15 17:57:53 +08:00 · 753 次点击
    这是一个创建于 1375 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 不完全重叠,有些包只能通过其中一个装。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2716 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:51 · PVG 13:51 · LAX 22:51 · JFK 01:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.