前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【基础知识】pip和conda,你会选择谁?

【基础知识】pip和conda,你会选择谁?

作者头像
自学气象人
发布2022-10-08 16:04:50
3.8K1
发布2022-10-08 16:04:50
举报
文章被收录于专栏:自学气象人自学气象人

大家好哇!我们在前面介绍如何为python部署第三方包时提到,推荐优先使用conda命令进行安装。那么在今天呢,我们就来聊一聊为什么更推荐使用conda而不是pip命令。

1

conda 和pip简介

在很多时候,由于conda和pip两个命令的某些功能存在重叠(比如可以用来安装第三方包),所以很多人认为他们是一样的。但其实两者最初被设计的目的并不相同。Pip是Python Packaging Authority(PyPA,是一个工作组,负责维护 python包中使用的一系列核心软件)推荐用来从Python Package Index(PyPI,是由PyPA开发的python包构成的索引包)下载第三方包的工具。Pip可以用来下载和安装.whl和源码格式的包,其中用pip进行源码安装可能会要求系统中已经成功安装了兼容的编译器以及必要的包。

而conda 则是一个跨平台的包和环境管理器,用于从Anaconda和Anaconda Cloud中安装和管理conda包。因为conda 包是二进制文件,所以我们不需要编译器来对它们进行编译,这是一个与pip不同的地方。此外,conda 包并不仅限于 安装Python软件,还可以借助conda来安装包含 C 或 C++ 包、R 包在内的任何其他软件。

2

conda和pip的主要区别

Conda和pip虽然在某些功能上重叠,但两者也存在着许多不同,各有各的优缺点,详细可以见下表。

conda

pip

包内容

二进制

.whl和源码

是否需要编译

不需要

需要

安装包类型

Python、C、R等任何类型

仅限于Python

是否支持环境管理

是,可以创建多个环境

否,需要借助virtualenv or venv等其它工具

依赖包检查

检查十分严格

检查不严格

包来源

Anaconda repo and cloud

PyPI

包数量

约1500个

约150000个

3

Conda的优势

在了解了conda和pip的基本概念之后,我们结合上表来具体谈谈为何推荐优先使用conda啦。首先,相比于pip只能安装Python包来说,conda可以安装用任何语言编写的软件包。这一优点带来的好处是巨大的,完全可以利用这一特性部署一个私有的个人环境。比如我在编译wrf时,除了服务器已经配置好的一些库以外,可能还缺少如libpng、zlib等库,这时便可以借助conda进行安装,十分方便。

其次在使用pip安装包之前必须先通过其他方式安装好python解释器,而conda则可以直接安装python解释器以及python软件包。

此外,conda还是一个超越python的内置环境管理工具,可以创建多个环境并使其相互隔离开,避免各个软件之间出现版本不兼容的现象。这在使用数据科学相关的工具时会非常有用,因为不同的处理工具可能包含相互冲突的需求,但使用conda的话可以避免将这些工具全部安装在一个环境中,比如可以在一个环境中安装python2.7版本的解释器,在另一个环境中安装Python3.7版本的解释器。而pip则不包含这样的内置环境管理工具,而是依赖于外部的其他工具,如virtualenv 或 venv来创建隔离的环境。

最后,由于conda对于环境中依赖关系的检查非常严格,所以基本上只要conda能安装上,软件包就能使用,但如果是使用pip的话,可能某些时候尽管显示你已成功安装,但由于包与包之间的依赖关系不满足,软件包会出现无法使用的情况。这主要是由于在安装软件包时,pip会在递归的串行循环中安装依赖项,并不能确保所有包的依赖关系同时满足。比如说若在安装顺序中较早安装的软件包与较晚安装的软件包具有不兼容的依赖项版本,就可能会导致环境错误,即使安装上也无法正常使用。而conda则会使用可满足性求解器(SAT)来验证是否满足环境中安装的所有软件包的全部要求。虽然这个检查可能需要一些额外的时间,但有利于防止出现上面环境不满足的现象。

以上就是推荐优先使用conda命令进行安装第三方库的全部原因了。虽然conda已经包含了数据科学、机器学习等领域的许多包了,但相对于PyPI上提供的超过150000个包相比,显得依然很小。所以当你想要的包在conda上没有的话,那就结合pip一起使用吧!

参考:

https://www.anaconda.com/blog/understanding-conda-and-pip

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自学气象人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档