详解conda与pip的区别(翻译自Understanding Conda and Pip)

详解conda与pip的区别 (翻译自Understanding Conda and Pip)

  • 原文传送门
  • 一句话概括
  • 翻译
    • 简介
    • 包的区别
    • 虚拟环境区别
    • 依赖的区别
    • 总结

原文传送门

Understanding Conda and Pip

一句话概括

pip可以允许你在任何环境中安装python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者python)。

conda pip
包的形式 二进制 whl or source
需要编译器
包的种类 任意语言 只有Python
创建虚拟环境 能(内置功能) 自己不能,需借助其他工具
依赖检查(详细请见下文)
包源 Anaconda仓库和Anaconda云 Pypi

翻译

简介

conda和pip通常被认为是几乎相同的。 尽管这两个工具的某些功能有重叠,但是它们是为不同的目的而设计的。 Pip是Python Packaging Authority推荐的工具,可用于从PyPI安装包。 Pip可以安装被打包为whl或source distributions(源代码发行包)的Python软件。 在用pip安装source distributions之前,电脑里需要有安装好的兼容编译器以及一些要用的库。

包的区别

Conda是一个跨平台的包和环境管理器,可以安装和管理 Anaconda repository以及Anaconda Cloud中的cond件包。 Conda包是二进制文件,不需要安装任何编译器。 另外,conda包不限于Python软件。 它们可能还包含C或C ++库,R软件包或任何其他软件。

这凸显了conda和pip之间的关键区别。 Pip安装Python包,而conda安装任何语言的包, 比如,在使用pip之前,必须预先装好Python解释器。 但Conda可以直接安装Python软件包以及Python解释器。

虚拟环境区别

另一个主要区别是conda能够创建隔离的环境,该环境可以包含不同版本的Python和/或其中安装的包。 当使用数据科学工具时,这可能非常有用,因为不同的工具可能包含冲突的要求,这可能会阻止将它们全部安装到单个环境中。 Pip没有对环境的内置支持,而是依赖于诸如virtualenv或venv的外部工具来创建隔离的环境。 Pipenv,poetry和hatch之类的工具对pip和虚拟环境进行了包装/。

依赖的区别

pip和conda在满足环境中的依赖关系方面也有所不同。 在安装包时,pip在递归的串行循环中安装依赖项。 不会保证同时满足所有包的依赖关系**(意思就是pip只关心新安装的包所牵扯的包)**。 如果安装较早的包与安装较晚的包依赖不同,则可能导致环境以微妙的方式被破坏。
相反,conda使用可满足性(SAT)求解器来验证是否满足环境中安装的所有软件包的所有要求。 这项检查可能需要花费更多时间,但有助于防止环境被破坏。 只要依赖包的元数据正确,conda就不会出错。

总结

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

你可能感兴趣的:(常识,python,anaconda,pip)