pip和conda之间有什么区别?

24 浏览
0 Comments

pip和conda之间有什么区别?

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

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

pipconda之间有什么区别?

admin 更改状态以发布 2023年5月22日
0
0 Comments

免责声明:本回答描述了十年前的情况,当时pip不支持二进制包。 Conda是专门创建的,以更好地支持构建和分发二进制包,特别是具有C扩展的数据科学库。参考资料:pip直到2013年的版本1.4才广泛支持便携式二进制包,而manylinux1规范在2016年3月的pip 8.1中推出。有关更多历史信息,请参见更新的回答

以下是简要概述:

pip

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

conda

  • 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上尤其如此,但在Linux上也可能如此,如果软件包有一些困难的C或FORTRAN库依赖项)。conda从二进制安装,意味着有人(例如Continuum)已经完成了编译软件包的艰苦工作,因此安装很容易。

如果您有兴趣构建自己的软件包,则还有一些差异。例如,pip是基于setuptools构建的,而conda使用自己的格式,这具有一些优点(如静态性,以及再次强调Python的通用性)。

0
0 Comments

引用自Conda博客

由于我们已经参与了Python世界很长时间,我们都知道pip、easy_install和virtualenv,但是这些工具并不能满足我们所有的具体要求。主要问题是它们都集中在Python本身,忽略了非Python库依赖项,例如HDF5、MKL、LLVM等,这些库没有在其源代码中设置setup.py文件,也不会将文件安装到Python的site-packages目录中。

因此,Conda是一个打包工具和安装程序,旨在比pip做更多的事情;它可以处理Python包以外的库依赖项以及Python包本身。Conda还创建了一个虚拟环境,就像virtualenv一样。

因此,Conda可能应该与Buildout进行比较,Buildout是另一个可以处理Python和非Python安装任务的工具。

由于Conda引入了新的打包格式,你不能交替使用pip和Conda;pip不能安装Conda打包格式。你可以同时使用这两个工具(通过安装conda install pip来安装pip),但它们也无法互操作。

在编写本答案时,Anaconda发布了一个新页面,介绍了理解Conda和Pip,它也重申了这一点:

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

接着是

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

0