我知道pip
是python包的包管理器。但是,我看到IPython网站上的安装使用conda
来安装IPython。
我可以使用pip
安装IPython吗?当我已经有conda
时,为什么我应该使用pip
作为另一个python包管理器?
pip
和conda
有什么区别?
引自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是有意义的。
我可能发现了一个小的性质的另一个区别。我有我的python环境在/usr
而不是/home
或其他什么。为了安装它,我将不得不使用sudo install pip
。对我来说,sudo install pip
的不良副作用与其他地方广泛报道的不同:在这样做之后,我不得不用python
运行sudo
以导入任何sudo
安装的包。我放弃了,最终发现我可以使用sudo conda
将包安装到/usr
下的环境中,然后正常导入而不需要sudo
的python
权限。我甚至使用sudo conda
修复破损的pip
而不是使用sudo pip uninstall pip
或sudo pip --upgrade install pip
。
这是一个简短的纲要:
conda build
的工具可以从源代码构建软件包,但conda install
本身可以安装已经构建的conda软件包。在这两种情况下:
conda的前两个要点实际上是什么使它比许多包装的pip更有利。由于pip是从源代码安装的,如果你无法编译源代码,安装它就会很痛苦(在Windows上尤其如此,但如果软件包有一些困难的C或FORTRAN库,它甚至可以在Linux上运行依赖)。 Conda从二进制文件安装,这意味着有人(例如Continuum)已经完成了编译软件包的艰苦工作,因此安装很容易。
如果您有兴趣构建自己的包,也会有一些差异。例如,pip建立在setuptools之上,而conda使用自己的格式,这有一些优点(比如静态,再次,Python不可知)。
其他答案给出了详细的详细描述,但我想强调一些高级别的要点。
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
。
不要混淆你,但你也可以在你的conda环境中使用pip,它可以验证上面的一般与python特定的管理者评论。
conda install -n testenv pip
source activate testenv
pip <pip command>
您还可以将pip添加到任何环境的默认包中,以便每次都存在,这样您就不必遵循上面的代码段。
从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
引自Conda: Myths and Misconceptions(综合描述):
...
现实: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不是竞争对手,而是专注于不同用户群和使用模式的工具。
对于WINDOWS用户
“标准”包装工具的情况最近有所改善:
“标准”+“调整”包装工具的情况也在改善:
“Conda”包装对其所服务的市场仍然更好,并突出了“标准”应该改进的领域。
(此外,依赖规范多次努力,在标准轮系统和conda系统或buildout中,并不是非常pythonic,如果所有这些包装'核心'技术可以通过某种PEP汇聚,那将是很好的)
pip
仅适用于Python
conda
仅适用于Anaconda +其他科学软件包,如R依赖等。不是每个人都需要已经附带Python的Anaconda。 Anaconda主要面向那些进行机器学习/深度学习等的人。休闲Python开发人员不会在他的笔记本电脑上运行Anaconda。
我可以使用pip来安装iPython吗?
当然,两者(页面上的第一种方法)
pip install ipython
和(第三种方法,第二种方法是conda
)
您可以从GitHub或PyPI手动下载IPython。要安装其中一个版本,请将其解压缩并使用终端从顶级源目录运行以下命令:
pip install .
是officially recommended ways to install。
当我已经拥有pip时,为什么我应该使用conda作为另一个python包管理器?
如上所述here:
如果您需要特定的包,可能只针对一个项目,或者如果您需要与其他人共享项目,则conda似乎更合适。
康达超越pip(YMMV)
pip和conda有什么区别?
其他人都广泛回答了这个问题。