协慌网

登录 贡献 社区

pip 和 conda 有什么区别?

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

我可以使用pip安装 IPython 吗? pip时,为什么还要使用conda作为另一个 python 软件包管理器?

pipconda什么区别?

答案

引用来自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 软件包格式。您可以通过侧(通过安装使用这两种工具侧pipconda install pip ),但他们不具备互操作性无论是。

自编写此答案以来,Anaconda在理解 Conda 和 Pip上发布了一个新页面,该页面也与此相呼应:

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

并进一步

有时需要一个软件包,该软件包不能作为 conda 软件包使用,但可以在 PyPI 上使用,并且可以与 pip 一起安装。在这些情况下,尝试同时使用 conda 和 pip 是有意义的。

这是一个简短的摘要:

点子

  • 仅 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 不可知的)。

其他答案对细节进行了合理的描述,但我想强调一些高级要点。

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 。 。