我知道pip
是 python 软件包的软件包管理器。但是,我看到 IPython 网站上的安装使用conda
来安装 IPython。
我可以使用pip
安装 IPython 吗? pip
时,为什么还要使用conda
作为另一个 python 软件包管理器?
pip
和conda
什么区别?
引用来自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 是有意义的。
这是一个简短的摘要:
conda build
的工具可以从源代码构建软件包,但是conda install
本身可以从已经构建的 Conda 软件包中安装东西。在两种情况下:
实际上,Conda 的前两个要点是使许多包装优于点子的原因。由于 pip 是从源代码安装的,因此如果您无法编译源代码,则可能很难安装它(在 Windows 上尤其如此,但在 Linux 上,如果软件包中包含一些困难的 C 或 FORTRAN 库,甚至可能也是这样。依赖项)。 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
。 。