为什么在conda里面还可以用pip,二者是什么样的关系?一文彻底弄懂pip和conda的区别

即使是对于有多年工作经验的编程老司机,如果被问到这样的问题,也不是很容易能马上给出答案。下面让我为大家一一道来,请搬好小板凳:

故事引言

在很久之前,为了方便对Python包进行管理,于是出现了pip这样的管理工具。这个工具可以很方便的下载指定名称的Python包,也可以指定版本,同时也可以卸载。然而美中不足的是,早期的这个工具它并不能够处理不同Python包之间的兼容性。

关于兼容性,举个简单的例子:

  • 比如开发包A依赖于开发包B的1.12版本,这两个包已经安装在电脑上了。

  • 某一天由于开发需要,你需要安装包C,而包C依赖包B的2.21版本。

  • 假设开发包B的这两个版本之间有非常大的改动,然后会导致他们互不兼容。换句话说有可能把函数名被改了,或者说把函数的参数改掉了

  • 于是在你安装开发包C的时候,pip偷偷的把你的开发包的版本升到了2.21,然而这一切你有可能都是不知情的

  • 于是又过了一个月,当你继续使用开发包A进行开发时,发现程序报错了,然后你突然就懵掉了……

美猴王Conda横空出世

为了应对不同版本Python包之间的相互依赖问题以及提供虚拟环境等,于是有团队便想再推出一个新的Python包管理工具,这就是Anaconda。Anaconda软件的命令行缩写为conda,下面用缩写指代。

由于我们的男主角出现的比较晚,他不能一开始就把原有的生态全部推翻,所以很显然这样的工具它是要与pip兼容的,换句话说就是在conda那里也允许使用pip。

conda可以在已安装新python包与旧版本冲突时进行提示,当然很多时候它是不允许安装的。

当然pip管理工具也在更新,最新的pip工具里面,其实已经也已经有相关的功能了。

Conda虚拟环境功能

考虑到Python同一个包不同版本的兼容问题以及不同包之间的依赖问题,然而有的时候又确实需要用不同版本的包。

比如我现在安装了tensorflow2.3,现在一个开源项目用tensorflow1.5实现的,当前项目用2.3跑报错,比如xx not found之类的。如果直接安装1.5,由于兼容性问题,我的2.3环境就要被破坏,或者干脆被卸载了。

应对这一问题比较简单的做法,就是将这两个tensorflow的版本进行隔离。既然隔离了,那他们也就是互不影响,相互独立的。被隔离的版本所在的Python环境称为虚拟环境,很显然这里有两个虚拟环境。

建议

如果你当前是在使用windows系统进行Python开发,强烈建议你安装conda,这样可以省去很多不必要的麻烦。如果是Linux,其实系统自带的Python和Pip也挺好用的。

全篇完。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

upDiff

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值