问题:pip和conda有什么区别?
我知道pip
是python软件包的软件包管理器。但是,我看到IPython网站conda
上的安装用于安装IPython。
我可以pip
用来安装IPython吗?conda
我已经拥有了为什么还要用作另一个python软件包管理器pip
?
pip
和之间有什么区别conda
?
回答 0
引用来自Conda博客:
参与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 在理解Conda和Pip上发布了新页面,该页面也与此相呼应:
这凸显了conda和pip之间的关键区别。Pip安装Python软件包,而conda安装软件包,其中可能包含以任何语言编写的软件。例如,在使用pip之前,必须通过系统软件包管理器或下载并运行安装程序来安装Python解释器。另一方面,Conda可以直接安装Python软件包以及Python解释器。
并进一步
有时需要一个软件包,该软件包不是conda软件包,但在PyPI上可用,可以与pip一起安装。在这些情况下,尝试同时使用conda和pip是有意义的。
回答 1
这是一个简短的摘要:
点子
- 仅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是MIT)
实际上,Conda的前两个要点是使许多包装优于点子的原因。由于pip是从源代码安装的,因此如果您无法编译源代码,则可能会很麻烦地安装东西(在Windows上尤其如此,但在Linux上,如果软件包中包含一些困难的C或FORTRAN库,甚至可能也是这样。依赖项)。Conda从二进制安装,这意味着某人(例如Continuum)已经完成了编译软件包的艰苦工作,因此安装很容易。
如果您对构建自己的软件包感兴趣,也有一些区别。例如,pip是建立在setuptools之上的,而Conda使用自己的格式,这种格式具有一些优点(例如,静态的,Python不可知的)。
回答 2
其他答案对这些细节给出了合理的描述,但我想强调一些高级要点。
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
从中使用它们。
回答 3
不要再让您感到困惑了,但是您也可以在conda环境中使用pip,这可以验证上面的一般管理员和python特定管理员的评论。
conda install -n testenv pip
source activate testenv
pip <pip command>
您还可以将pip添加到任何环境的默认程序包中,因此每次都会显示pip,因此您不必遵循上述代码段。
回答 4
引用康达在Continuum网站上发表的关于数据科学的文章:
康达vs点
Python程序员可能很熟悉pip从PyPI下载软件包并管理他们的要求。尽管conda和pip都是程序包管理器,但它们却大不相同:
- Pip是特定于Python软件包的,而conda是与语言无关的,这意味着我们可以使用conda管理任何语言的软件包。
- Conda本机创建与语言无关的环境,而pip依靠virtualenv仅管理Python环境尽管建议始终使用conda软件包,但conda也包含pip,因此您不必在这两者之间进行选择。例如,要安装没有conda软件包但可通过pip获得的python软件包,请运行,例如:
conda install pip
pip install gensim
回答 5
引用《Conda:神话与误解》(全面描述):
…
误解3:Conda和Pip是直接竞争对手
现实:Conda和pip服务于不同的目的,仅直接竞争一小部分任务:即在隔离的环境中安装Python软件包。
皮普,代表P IP 我 nstalls P ackages,是Python的官方认可的包管理器,并且是最常用的在其上安装Python包索引(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软件包。
Conda和pip不是竞争对手,而是针对不同用户群和使用方式的工具。
回答 6
对于WINDOWS用户
最近,“标准”包装工具的状况正在改善:
截至9月,在pypi本身上,有48%的车轮包装。2015年11月11日(高于2015年5月的38%和2014年9月的24%),
现在,最新的python 2.7.9支持开箱即用的wheel格式,
“标准” +“调整”包装工具的状况也在改善:
您可以在http://www.lfd.uci.edu/~gohlke/pythonlibs上找到几乎所有关于转轮格式的科学软件包,
mingwpy项目可能有一天为Windows用户带来一个“编译”包,允许在需要时从源代码安装所有内容。
“康达”包装对于所服务的市场而言仍然更好,并强调了“标准” 应该改进的地方。
(同样,在标准车轮系统和conda系统中,或者在扩展方面,依赖规范的多方面努力不是很Python,如果所有这些打包的“核心”技术都可以通过某种PEP收敛,那就太好了)
回答 7
回答 8
我可以使用pip安装iPython吗?
当然,两者(第一种方法在页面上)
pip install ipython
和(第三种方法,第二种是conda
)
您可以从GitHub或PyPI手动下载IPython。要安装这些版本之一,请解压缩它并使用终端从顶级源目录运行以下命令:
pip install .
当我已经有了pip时,为什么还要使用conda作为另一个python软件包管理器?
如这里所说:
如果您需要一个特定的软件包,也许仅用于一个项目,或者需要与其他人共享该项目,那么conda似乎更合适。
康达(YMMV)超过点
- 使用非Python工具的项目
- 与同事分享
- 在版本之间切换
- 在具有不同库版本的项目之间切换
pip和conda有什么区别?
其他所有人对此都有广泛的回答。
回答 9
pip
仅适用于Python
conda
仅适用于Anaconda +其他科学软件包,例如R依赖等。并非每个人都需要Python附带的Anaconda。Anaconda主要适合那些进行机器学习/深度学习等的人。Casual Python开发人员不会在他的笔记本电脑上运行Anaconda。
回答 10
我可能已经发现了另一小的区别。我在python环境下/usr
而不是在/home
任何环境下。为了安装它,我将不得不使用sudo install pip
。对我来说,不想要的副作用sudo install pip
是比被广泛报道的其他地方略有不同:这样做之后,我还得跑python
与sudo
以进口任何的sudo
-installed包。我放弃了这一点,最终发现我可以sudo conda
将软件包安装到一个环境中/usr
,然后在该环境下可以正常导入而不需要sudo
获得许可python
。我什sudo conda
至习惯于修复损坏的东西,pip
而不是使用sudo pip uninstall pip
or sudo pip --upgrade install pip
。