pip和conda有什么区别?

问题描述 投票:569回答:10

我知道pip是python包的包管理器。但是,我看到IPython网站上的安装使用conda来安装IPython。

我可以使用pip安装IPython吗?当我已经有conda时,为什么我应该使用pip作为另一个python包管理器?

pipconda有什么区别?

python pip ipython package-managers conda
10个回答
440
投票

引自Conda blog

我们长期参与python世界,我们都知道pip,easy_install和virtualenv,但这些工具并不能满足我们所有的特定要求。主要问题是它们专注于Python,忽略了非Python库依赖项,如HDF5,MKL,LLVM等,它们的源代码中没有setup.py,也没有将文件安装到Python的站点中-packages目录。

所以Conda是一个包装工具和安装程序,旨在做更多的pip所做的事情;处理Python包之外的库依赖项以及Python包本身。 Conda还创建了一个虚拟环境,就像virtualenv一样。

因此,Conda应该与Buildout进行比较,这是另一个可以让你处理Python和非Python安装任务的工具。

因为Conda引入了新的包装格式,所以不能互换使用pip和Conda; pip无法安装Conda包格式。您可以并排使用这两个工具(通过使用pip安装conda install pip),但它们也不能互操作。

自写这个答案以来,Anaconda已经发布了一个new page on Understanding Conda and Pip,它也与此相呼应:

这凸显了conda和pip之间的关键区别。 Pip安装Python包,而conda安装包可能包含用任何语言编写的软件的包。例如,在使用pip之前,必须通过系统包管理器或下载并运行安装程序来安装Python解释器。另一方面,Conda可以直接安装Python包以及Python解释器。

并进一步

偶尔需要一个包,它不能用作conda包,但可以在PyPI上使用,可以用pip安装。在这些情况下,尝试同时使用conda和pip是有意义的。


0
投票

我可能发现了一个小的性质的另一个区别。我有我的python环境在/usr而不是/home或其他什么。为了安装它,我将不得不使用sudo install pip。对我来说,sudo install pip的不良副作用与其他地方广泛报道的不同:在这样做之后,我不得不用python运行sudo以导入任何sudo安装的包。我放弃了,最终发现我可以使用sudo conda将包安装到/usr下的环境中,然后正常导入而不需要sudopython权限。我甚至使用sudo conda修复破损的pip而不是使用sudo pip uninstall pipsudo pip --upgrade install pip


229
投票

这是一个简短的纲要:

果仁

  • 仅限Python包。
  • 从源代码编译所有内容。编辑:pip现在安装二进制轮子,如果它们可用。
  • 由核心Python社区祝福(即Python 3.4+包括自动提升pip的代码)。

康达

  • Python不可知论者。现有软件包的主要关注点是Python,实际上conda本身是用Python编写的,但你也可以为C库或R软件包或任何东西提供conda软件包。
  • 安装二进制文件。有一个名为conda build的工具可以从源代码构建软件包,但conda install本身可以安装已经构建的conda软件包。
  • 外部。 Conda是Anaconda的包管理器,它是由Continuum Analytics提供的Python发行版,但它也可以在Anaconda之外使用。您可以通过pip安装将它与现有的Python安装一起使用(尽管除非您有充分的理由使用现有安装,否则不建议这样做)。

在这两种情况下:

  • 用Python编写
  • 开源(conda是BSD,pip是麻省理工学院)

conda的前两个要点实际上是什么使它比许多包装的pip更有利。由于pip是从源代码安装的,如果你无法编译源代码,安装它就会很痛苦(在Windows上尤其如此,但如果软件包有一些困难的C或FORTRAN库,它甚至可以在Linux上运行依赖)。 Conda从二进制文件安装,这意味着有人(例如Continuum)已经完成了编译软件包的艰苦工作,因此安装很容易。

如果您有兴趣构建自己的包,也会有一些差异。例如,pip建立在setuptools之上,而conda使用自己的格式,这有一些优点(比如静态,再次,Python不可知)。


86
投票

其他答案给出了详细的详细描述,但我想强调一些高级别的要点。

pip是一个包管理器,便于安装,升级和卸载python包。它也适用于虚拟python环境。

conda是任何软件(安装,升级和卸载)的软件包管理器。它也适用于虚拟系统环境。

conda设计的目标之一是促进用户所需的整个软件堆栈的包管理,其中一个或多个python版本可能只是一小部分。这包括低级库,如线性代数,编译器,如Windows上的mingw,编辑器,Hg和Git等版本控制工具,或其他需要分发和管理的工具。

对于版本管理,pip允许您在多个python环境之间切换和管理。

Conda允许您在多个通用环境之间切换和管理,其中多个其他内容可能因版本号而异,例如C库,编译器,测试套件或数据库引擎等。

Conda不是以Windows为中心的,但在Windows上,当需要安装和管理需要编译的复杂科学包时,它是目前可用的优秀解决方案。

当我想到在Windows上通过pip编译许多这些软件包失去了多少时间,或者在需要编译时调试失败的pip install会话时,我想要哭泣。

最后一点,Continuum Analytics还托管(免费)binstar.org(现在称为anaconda.org),允许常规软件包开发人员创建他们自己的自定义(内置!)软件堆栈,其软件包用户可以从conda install


25
投票

不要混淆你,但你也可以在你的conda环境中使用pip,它可以验证上面的一般与python特定的管理者评论。

conda install -n testenv pip
source activate testenv
pip <pip command>

您还可以将pip添加到任何环境的默认包中,以便每次都存在,这样您就不必遵循上面的代码段。


20
投票

Conda for Data Science文章引用连续网站:

康达vs pip

Python程序员可能熟悉pip从PyPI下载包并管理他们的要求。虽然conda和pip都是包管理器,但它们却截然不同:

  • Pip特定于Python包,conda与语言无关,这意味着我们可以使用conda来管理来自任何语言的包Pip从源代码编译并且conda安装二进制文件,消除了编译的负担
  • Conda本地创建与语言无关的环境,而pip依赖virtualenv来管理Python环境虽然建议始终使用conda包,但conda还包括pip,因此您不必在两者之间进行选择。例如,要安装一个没有conda包但通过pip可用的python包,只需运行,例如:
conda install pip
pip install gensim

13
投票

引自Conda: Myths and Misconceptions(综合描述):

...

误区3:Conda和pip是直接的竞争对手

现实:Conda和pip服务于不同的目的,并且只在一小部分任务中直接竞争:即在隔离环境中安装Python包。

Pip代表Pip Installs Packages,是Python官方认可的软件包管理器,最常用于安装Python Package Index(PyPI)上发布的软件包。 pip和PyPI都受Python Packaging Authority(PyPA)的支配和支持。

简而言之,pip是Python包的通用管理器; conda是一个与语言无关的跨平台环境管理器。对于用户来说,最显着的区别可能就是:pip在任何环境中安装python包; conda在conda环境中安装任何软件包。如果您所做的只是在隔离环境中安装Python包,那么conda和pip + virtualenv大多可以互换,模块化依赖性处理和包可用性方面的差异。隔离环境我指的是conda-env或virtualenv,您可以在其中安装包而无需修改系统Python安装。

即使放弃神话#2,如果我们只关注Python包的安装,conda和pip会为不同的受众和不同目的服务。如果你想在现有的系统Python安装中管理Python包,conda无法帮助你:按照设计,它只能在conda环境中安装包。如果您想要使用依赖外部依赖项的许多Python包(NumPy,SciPy和Matplotlib是常见示例),同时以有意义的方式跟踪这些依赖项,pip无法帮助您:按设计,它管理Python包,只管理Python包。

Conda和pip不是竞争对手,而是专注于不同用户群和使用模式的工具。


12
投票

对于WINDOWS用户

“标准”包装工具的情况最近有所改善:

  • 在pypi本身,截至9月,现在有48%的车轮包装。 2015年11月(2015年5月为38%,2014年9月为24%),
  • 现在支持每个最新的python 2.7.9开箱即用的轮式格式,

“标准”+“调整”包装工具的情况也在改善:

  • 你可以在http://www.lfd.uci.edu/~gohlke/pythonlibs找到几乎所有轮式的科学包装,
  • mingwpy项目可能会为Windows用户带来一天的“编译”包,允许在需要时从源安装所有内容。

“Conda”包装对其所服务的市场仍然更好,并突出了“标准”应该改进的领域。

(此外,依赖规范多次努力,在标准轮系统和conda系统或buildout中,并不是非常pythonic,如果所有这些包装'核心'技术可以通过某种PEP汇聚,那将是很好的)


3
投票

pip仅适用于Python

conda仅适用于Anaconda +其他科学软件包,如R依赖等。不是每个人都需要已经附带Python的Anaconda。 Anaconda主要面向那些进行机器学习/深度学习等的人。休闲Python开发人员不会在他的笔记本电脑上运行Anaconda。


1
投票

我可以使用pip来安装iPython吗?

当然,两者(页面上的第一种方法)

pip install ipython

和(第三种方法,第二种方法是conda

您可以从GitHub或PyPI手动下载IPython。要安装其中一个版本,请将其解压缩并使用终端从顶级源目录运行以下命令:

pip install .

officially recommended ways to install

当我已经拥有pip时,为什么我应该使用conda作为另一个python包管理器?

如上所述here

如果您需要特定的包,可能只针对一个项目,或者如果您需要与其他人共享项目,则conda似乎更合适。

康达超越pip(YMMV

  • 使用非python工具的项目
  • 与同事分享
  • 在版本之间切换
  • 在具有不同库版本的项目之间切换

pip和conda有什么区别?

其他人都广泛回答了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.