两者的区别
–conda: 开源包管理系统和环境管理系统,支持Python, Java, C/C++ 等多种语言,支持Windows, macOS 和 Linux 上运行。
–pip:官方包管理器,推荐用于安装Python包索引(PyPI
)上发布的包
conda
包是二进制文件,不需要编辑器来安装它;而 pip
可能要求系统在成功调用 pip
之前要安装兼容的编辑器(可能还有库)。所以在使用 pip
之前,必须通过系统包管理器或下载并运行包安装程序来安装 Python
解释器,而 conda
可以直接安装 Python
包和 Python
解释器。
这两种工具的另一个关键区别是,conda
能够创建隔离环境,其中可以包含不同版本的 Python
或其中安装的包。在使用数据科学工具时非常有用,因为不同的工具可能包含相互冲突的需求,可能会阻止它们全部安装到一个环境中。pip
没有对环境的内建支持,而是依赖于其他工具,如 virtualenv
或 venv
来创建隔离的环境。
pip
和 conda
在实现环境中的依赖关系方面也有所不同。在安装包时,pip
将依赖项以递归、串行循环的方式安装,不需要努力确保同时满足所有包的依赖关系。如果在较早安装的包与安装较晚的包有不兼容的依赖版本,这可能会导致环境冲突。相反,conda
使用 satisfiability solver
(SAT)来验证环境中安装的所有包的所有需求。(可理解为,conda
安装的不仅仅是你要安装的那个包,还会把这个包涉及的所有包安装下来;而 pip
只安装那个包)
在 Anaconda 存储库中有超过1500个包可用,包括最流行的数据科学、机器学习和 AI 框架,这些程序以及 Anaconda cloud 上数以千计的附加包,都可以使用 conda
安装。尽管有这么多的包,但与 PyPI
上超过15万可用的包相比,它仍然很小。如果需要一个包,这个包不可通过 conda
安装,可以用 pip
安装,所以这就是将 pip
与 conda
结合使用的重要意义。
Anaconda官方给出的解释:Understanding Conda and Pip