Python入门的基本概念之包管理——pip与conda的简介对比

标签:#conda##pip##python##编程语言# 时间:2021/11/13 15:18:08 作者:小木

对于刚接触使用Python的同学来说,Python强大的生态与优秀的开源工具应该印象十分深刻。同时对于一些已经在使用Python解决问题的童鞋来说,使用pip来安装一些别人提供的工具应该已经熟悉了。当然,也有一些同学应该也听说可以使用conda来安装一些第三方的开源包。那么,python的包管理工具pip是一个什么样的东西?conda作为一个替代者或者补充,与pip有什么区别,二者分布适合什么情况下使用呢?本文将根据我的个人经验与观点为大家做一个简单的说明。


一、Python包管理

在对比这两个工具之前,我们首先介绍一下Python的包管理。

开源的流行极大地促进了代码的重用。很多事情很多童鞋都已经解决过了,也共享出来了。大家可以直接使用这些代码来解决问题,这些代码形成的包就是第三方包。Python中这些包很多很强大,极大地方便了我们解决问题的工具箱。那么,搜索、安装这些包就需要一个好的工具来提升效率。


熟悉Windows、Java和C的童鞋可能对于安装第三方包和工具的理解可能主要是手动安装过程。例如,在windows下安装软件,一般是先在网络搜索exe安装包,然后双击安装后使用。Java开发或者C语言开发引入第三方包和工具的过程可能是在网络搜索第三方包,然后把它解压放到指定的位置,再在一些配置文件中填好包的位置。使用IDE的童鞋也是类似,点击包管理,然后添加依赖。但是,这种方式显然并不方便。如果有一个像AppStore那样的商店,大家有啥需要直接搜索安装,那么在安全性和便捷性方面就会体验好很多。

对于使用Linux系统的童鞋来说,包管理工具就是一个非常熟悉的概念了。如果你在Linux系统中想要一个zip解压缩工具,那么假如你使用的是openSUSE工具,那么直接使用zypper命令执行:

zypper install zip

即可自动在某些地方找zip的工具,然后确认安装即可。

在python中,包管理工具也是非常重要和方便的一个内容。它可以帮助我们管理和安装第三方包,提升我们的效率。pip和conda就是两个最有名的python包管理工具。

Pip的简介和特点

Pip是一个纯粹的Python包管理器,它自己本身也是一个Python工具。因此,它不能独立于Python运行,想要先安装Python,然后再安装pip之后才能使用pip管理Python的包。可能很多童鞋没注意,在Windows下使用图形化界面安装Python的时候有如下的界面:


红色的就是安装好python之后,默认安装pip工具。所以,pip本身其实并不是Python固有的,也是一个Python的工具。Pip安装好之后,我们可以使用如下命令安装第三方包:

pip install numpy

之后,pip会自动在The Python Package Index (PyPI)这里寻找对应的包,然后找到符合你的版本列出来,你只需要确认之后就能下载安装使用了。这里的PyPI就是pip对应的一个官方Python软件库。当然,你也可以选择通过配置index-url来更换pip搜索的地址,这不在本文的讨论内容了。

但是,很多时候,我们并不是只需要Python工具。很多时候,很多包也需要依赖C语言或者其它软件的库。例如,如果我们需要在项目中使用gnuplot(一个C语言编写的绘图渲染工具)。这时候pip是无法直接安装gnuplot的。由于pip是纯python的解决方案,对于非Python的包,它无法管理。那么就需要我们手动安装使用了。

当然,pip也有自己的解决方案,就是我们可以把所有的需要的包括so这种非Python的文件,打包成一个wheel文件,也就是我们常见的whl后缀的文件,这时候pip也可以安装。并按照配置的内容自动转移到指定的位置。

Conda简介与特点

Conda是另一个开源的包管理工具。它可以运行在windows、linux等多个系统上。它也可以帮助我们安装Python的包。


但是,与pip纯粹的面向Python的方案不同,conda是一个独立的包管理工具。它是只依赖操作系统和标准C语言库的工具。因此,conda的包管理不仅仅是Python,也可以是其它的工具。与pip最大的差异是,conda甚至可以帮我们安装Python以及其它非Python工具,如上面提到的gnuplot。

但是我们平时使用的更多的是miniconda与anaconda。这两个与前面的conda有啥区别呢?其实也很简单。miniconda就是我们conda+python,安装完之后不仅可以使用conda工具管理包,也会帮助我们安装好python解释器。而anaconda则是在miniconda基础上另外再默认帮助我们安装常用的160多个Python第三方包(包括numpy、pandas等)。

同时,conda只需要一种配置文件,就可以在不同的系统中通用,因此可以省去更多的问题。conda安装的包一般来源于conda-forge(注意,conda的默认渠道其实是Anaconda公司提供的,但是有很多的限制,并且不追求大而全和最新的版本,而conda-forge社区渠道则更多更新)。

pip与conda的差异总结

通过前面的描述,我们应该了解了,pip与conda都是Python包管理工具,pip是基于Python的,面向纯Python的解决方法,需要在Python安装完之使用。对于非Python的文件,可以采用whl封装来解决。而conda则是一个只依赖操作系统和C语言的包管理工具,可以为Python的包管理提供更加全面的支撑。

pip conda
是否可以安装Python 不可以 可以
第三方共享库的安装方式 通过whl 可以
是否可以安装可执行文件和工具 不可以 可以
是否可以安装Python源代码 可以 可以
官方包来源渠道 PyPI Anaconda、Conda-Forge
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送