速科普:pip和conda安装的区别

实践指南 : pip install和conda install结合使用,可以在 conda 环境(如test)中使用 pip 来安装不在 conda 仓库中的包,但要注意这样可能会导致依赖冲突。先用 conda 安装大部分包,然后用 pip 安装 conda 找不到的包

conda install 和 pip install 是用于安装 Python 包的两个不同工具,它们之间有一些重要的区别:

1. 包管理范围

conda install:

Conda 是一个 包管理系统和环境管理系统,支持多种语言,不仅仅是 Python。它可以安装 Python 包以及其他软件(如 C++ 库、编译器、工具等)(如cuDNN的软件可以通过conda直接install而避开sudo权限)
Conda 安装的是二进制包,这意味着安装速度更,并且已经为目标平台编译好,避免了在安装过程中编译源代码的麻烦。

pip install:

pip 是 Python 的包管理器,只能用于安装 Python 包和模块。
pip 从 Python Package Index (PyPI) 上下载并安装包,通常是源代码包,需要在本地编译安装,相对conda较慢,特别是对于一些包含 C 扩展的包。

2. 依赖管理

conda install:

Conda 在安装包时,会自动管理依赖关系,确保所有包的版本相互兼容。这可以避免依赖冲突。
Conda 有一个庞大的包仓库(Anaconda 和 Conda-Forge),这些仓库里的包都经过测试,确保相互兼容。

pip install:

pip 安装包时也会解决依赖关系,但它主要依赖于开发者在 setup.py 中定义的依赖项。pip 不会自动检查整个环境的依赖冲突,因此可能会出现版本冲突或不兼容的情况。
pip 允许你从各种源(包括本地文件系统或 GitHub)安装包,而不仅仅是 PyPI。

3. 环境管理

conda:

Conda 既是包管理器,也是环境管理器。你可以用 conda 来创建、克隆和管理不同的虚拟环境。
在一个 conda 环境中,可以有不同的 Python 版本和各种不同的包版本,并且这些环境是相互隔离的。

pip:

pip 仅仅是包管理器,不提供环境管理功能。你通常会结合 virtualenv 或 venv 来创建隔离的 Python 环境。

4. 包的安装来源

conda:

Conda 从 conda 仓库(如 Conda-Forge 或 Anaconda)下载包,这些包已经预编译,并且经过了兼容性测试。
Conda 可以安装非 Python 的依赖项,比如 C 库、R 包等,这使得它在数据科学和机器学习领域特别有用。

pip:

pip 从 PyPI 安装包,通常这些包是纯 Python 的,或者是需要编译的源码包。pip 不能管理系统级的依赖项(如 C 库)。
pip 可以安装最新的包,因为开发者往往首先发布到 PyPI。

5. 使用场景

conda:

适用于需要管理多个编程语言的项目,或需要复杂依赖环境的项目(如数据科学项目)。
在需要安装大而复杂的软件包(如 numpy、scipy 或带有 C 扩展的包)时,conda 通常更快、更简单。

pip:

适用于纯 Python 的项目,特别是那些依赖最新的 Python 包的项目。
由于 pip 是 Python 原生工具,所以在 Python 社区广泛使用。

6. 结合使用

可以在 conda 环境中使用 pip 来安装不在 conda 仓库中的包,包的路劲依然在conda/your_env/site_package下,但要注意这样可能会导致依赖冲突。
先用 conda 安装大部分包,然后用 pip 安装 conda 找不到的包

你可能感兴趣的:(工程实践,pip,conda)