pip 和 conda 有什么区别?

新手上路,请多包涵

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

我可以使用 pip 来安装IPython吗?当我已经拥有 pip 时,为什么还要使用 conda 作为另一个 python 包管理器?

pipconda 有什么区别?

原文由 lazywei 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 908
2 个回答

引用 康达博客

涉足python世界这么久,我们都知道pip、easy_install、virtualenv,但是这些工具并不能满足我们所有的具体要求。主要问题是他们专注于 Python,忽略了非 Python 库依赖,例如 HDF5、MKL、LLVM 等,它们的源代码中没有 setup.py,也没有将文件安装到 Python 的站点-包目录。

因此,Conda 是一个打包工具和安装程序,旨在做的不仅仅是 pip 所做的;处理 Python 包 之外 的库依赖关系以及 Python 包本身。 Conda 还创建了一个虚拟环境,就像 virtualenv 一样。

因此,或许应该将 Conda 与 Buildout 进行比较,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 是有意义的。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 4.0 许可协议

免责声明:这个答案描述的是十年前的状态,那时 pip 不支持二进制包。 Conda 是专门为更好地支持构建和分发二进制包而创建的,特别是具有 C 扩展的数据科学库。作为参考,pip 仅获得了对带轮子的便携式二进制包(2013 年的 pip 1.4)和 manylinux1 规范(2016 年 3 月的 pip 8.1)的广泛支持。有关更多历史记录,请参阅 最近的答案

这是一个简短的摘要:

  • 仅限 Python 包。
  • 从源代码编译所有内容。 编辑:pip 现在安装二进制轮子(如果可用)。
  • 受到核心 Python 社区的祝福(即 Python 3.4+ 包括自动引导 pip 的代码)。

康达

  • Python不可知论者。现有包的主要焦点是 Python,实际上 Conda 本身是用 Python 编写的,但您也可以为 C 库或 R 包或任何东西提供 Conda 包。
  • 安装二进制文件。有一个名为 conda build 的工具从源代码构建包,但是 conda install 本身从已经构建的 Conda 包中安装东西。
  • 外部的。 conda 是一个环境和包管理器。它包含在 Continuum Analytics(现在称为 Anaconda, Inc.)提供的 Anaconda Python 发行版中。

conda 是一个用 Python 编写的环境管理器,与语言无关。 conda 环境管理功能涵盖了 venv、virtualenv、pipenv、pyenv 和其他特定于 Python 的包管理器提供的功能。您可以通过 pip 安装在现有 Python 安装中使用 conda(尽管不推荐这样做,除非您有充分的理由使用现有安装)。截至 2022 年,conda 和 pip 并未完全了解虚拟环境中的彼此包管理活动,它们也无法与 Python 包管理互操作。

在这两种情况下:

  • 用 Python 编写
  • 开源(conda是BSD,pip是MIT)
  • 警告:虽然 conda 本身是开源的,但包存储库由 Anaconda Inc 托管,并且对商业使用有限制。

conda 的前两个要点确实使它在许多包中优于 pip。由于 pip 从源代码安装,如果您无法编译源代码,用它安装东西可能会很痛苦(这在 Windows 上尤其如此,但如果软件包有一些困难的 C 或 FORTRAN 库,在 Linux 上什至是这样依赖)。 conda 从二进制安装,这意味着有人(例如,Continuum)已经完成了编译包的艰苦工作,因此安装很容易。

如果您有兴趣构建自己的包,也有一些差异。例如,pip 建立在 setuptools 之上,而 conda 使用自己的格式,这有一些优势(比如静态的,而且与 Python 无关)。

原文由 asmeurer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题