Conda和Pip的区别

Conda和pip通常被认为是几乎相同的。尽管这两个工具的某些功能重叠,但是它们是经过设计的,应用于不同的目的。Pip是Python Packaging Authority推荐的工具,用于从 Python包索引,PyPI下载包。Pip安装打包为Wheels或source发行版的Python软件。后者可能要求系统在调用pip成功之前已安装兼容的编译器以及可能的库。

Conda 是一个跨平台软件包和环境管理器,可从以下位置安装和管理conda软件包: Anaconda存储库 以及从 Anaconda云。Conda软件包是二进制文件。从来不需要安装任何编译器。另外,conda软件包不限于Python软件。它们可能还包含C或C ++库,R软件包或任何其他软件。

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

这两个工具之间的另一个主要区别是conda能够创建隔离的环境,该环境可以包含不同版本的Python和/或其中安装的软件包。当使用数据科学工具时,这可能非常有用,因为不同的工具可能包含相互冲突的要求,这可能会阻止将它们全部安装到单个环境中。Pip没有内置的环境支持,而是依赖于其他工具,例如virtualenv 要么 venv创建隔离的环境。诸如pipenvpoetry, 和 hatch 封装了 pip和virtualenv提供了用于这些环境的统一方法。

pip和conda在满足环境中的依赖关系方面也有所不同。在安装软件包时,pip在递归串行循环中安装依赖项。不会努力确保同时满足所有软件包的依赖关系。如果按顺序较早安装的软件包相对于按顺序较晚安装的软件包具有不兼容的依赖项版本,则可能导致环境以微妙的方式破坏。相反,conda使用可满足性(SAT)求解器来验证是否满足环境中安装的所有软件包的所有要求。这项检查可能会花费额外的时间,但有助于防止破坏环境的创建。只要有关依赖项的软件包元数据正确,conda就会按预期产生工作环境。

鉴于conda和pip之间的相似之处,有人尝试将这些工具组合在一起以创建数据科学环境就不足为奇了。将pip与conda结合的主要原因是,一个或多个软件包只能通过pip安装。Anaconda存储库中提供了1,500多个软件包,其中包括最受欢迎的数据科学,机器学习和AI框架。这些以及通过渠道在Anaconda云上可用的数千个其他软件包,包括conda-forge 和 bioconda,可以使用conda安装。尽管有大量的软件包,但是与PyPI上可用的150,000多个软件包相比,它仍然很小。有时需要一个软件包,该软件包不是conda软件包,但在PyPI上可用,可以与pip一起安装。在这些情况下,尝试同时使用conda和pip是有意义的。

conda和pip的比较

condapip
包格式二进制文件wheel 或 source
可能需要编译器没有
包装类型任何仅限Python
创造环境是的,内置否,需要virtualenv或venv
依赖检查没有
包来源Anaconda repo and cloudPyPI

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/pythonops/2878.html

发表评论

邮箱地址不会被公开。 必填项已用*标注