Reality: Conda and pip serve different purposes, and only directly compete in a small subset of tasks: namely installing Python packages in isolated environments.
Pip代表 P ip I nstalls P ackages,是Python官方认可的软件包管理器,最常用于安装Python Package Index(PyPI)上发布的软件包 . pip和PyPI都受Python Packaging Authority(PyPA)的支配和支持 .
9 回答
引用Conda blog:
因此,Conda是一个包装工具和安装程序,旨在做的不仅仅是
pip
;处理Python包之外的库依赖项以及Python包本身 . Conda还创建了一个虚拟环境,如virtualenv
.因此,Conda应该与Buildout进行比较,这可能是另一个允许您处理Python和非Python安装任务的工具 .
因为Conda引入了新的包装格式,所以不能互换使用
pip
和Conda;pip
无法安装Conda包格式 . 您可以并排使用这两个工具(通过pip
安装conda install pip
),但它们也不能互操作 .从Conda for Data Science文章引用连续网站:
这是一个简短的纲要:
点
仅
Python包 .
从源代码编译所有内容 . EDIT: pip now installs binary wheels, if they are available.
由核心Python社区祝福(即,Python 3.4包含自动提升pip的代码) .
conda
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 Build 在setuptools之上,而conda使用自己的格式,这有一些优点(比如静态,再次,Python不可知) .
不要混淆你,但你也可以在你的conda环境中使用pip,这可以验证上面的一般与python特定的管理者评论 .
您还可以将pip添加到任何环境的默认包中,以便每次都存在,这样您就不必遵循上面的代码段 .
pip
仅适用于Pythonconda
仅适用于Anaconda等其他科学软件包,如R依赖等 . 不是每个人都需要已经附带Python的Anaconda . Anaconda主要面向那些进行机器学习/深度学习等的人 . 休闲Python开发人员不会在他的笔记本电脑上运行Anaconda .当然,两者(第一页上页)
(第三种方法,第二种方法是
conda
)是officially recommended ways to install .
如上所述here:
康达超越点(YMMV)
使用非python工具的项目
与同事分享
版本之间切换
在具有不同库版本的项目之间切换
其他人都广泛回答了这个问题 .
其他答案给出了详细的详细描述,但我想强调一些高级别的要点 .
pip是一个包管理器,便于 python packages 的安装,升级和卸载 . 它也适用于虚拟 python 环境 .
conda是 any software (安装,升级和卸载)的包管理器 . 它也适用于虚拟 system 环境 .
conda设计的目标之一是促进用户所需的整个软件堆栈的包管理,其中一个或多个python版本可能只是一小部分 . 这包括低级库,如线性代数,编译器,如Windows上的mingw,编辑器,Hg和Git等版本控制工具,或其他需要分发和管理的工具 .
对于版本管理,pip允许您在多个 python 环境之间切换和管理 .
Conda允许您在_502996之间切换和管理 multiple general purpose environments ,其中多个其他内容可能因版本号而异,例如C库,编译器,测试套件或数据库引擎等 .
Conda不是以Windows为中心的,但在Windows上,当需要安装和管理需要编译的复杂科学包时,它是目前可用的优秀解决方案 .
当我想到在Windows上通过pip编译许多这些软件包失去了多少时间,或者在需要编译时调试失败的
pip install
会话时,我想要哭泣 .最后一点,Continuum Analytics还托管(免费)binstar.org(现称为repo.continuum.io),允许常规软件包开发人员创建自己的自定义(内置!)软件堆栈,其软件包用户可以从中获得
conda install
.For WINDOWS users
“标准”包装工具的情况最近有所改善:
在pypi本身_999_,截至9月,现在有48%的轮组 . 2015年11月(2015年5月为38%,2014年9月为24%),
“标准”“调整”包装工具的情况也在改善:
你可以在http://www.lfd.uci.edu/~gohlke/pythonlibs找到几乎所有轮式的科学包装,
mingwpy项目可能会为Windows用户带来一天的“编译”包,允许在需要时从源安装所有内容 .
"Conda"包装对于其服务的市场仍然更好,并突出了"standard" should 改善的领域 .
(此外,依赖规范多次努力,在标准轮系统和conda系统或buildout中,并不是非常pythonic,如果所有这些包装'核心'技术可以通过某种PEP汇聚,那将是很好的)
引自Conda: Myths and Misconceptions(全面描述):
...
神话#3:Conda和pip是直接竞争对手
Reality: Conda and pip serve different purposes, and only directly compete in a small subset of tasks: namely installing Python packages in isolated environments.
Pip代表 P ip I nstalls P ackages,是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不是竞争对手,而是专注于不同用户群和使用模式的工具 .