pip和conda可以混用吗(简述conda和pip命令的区别)

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

故事引言

在很久之前,为了方便对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也挺好用的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月17日 上午10:11
下一篇 2023年4月17日 上午10:27

相关推荐