有关pip与conda的介绍

发布于:2025-03-28 ⋅ 阅读:(24) ⋅ 点赞:(0)

Conda vs. Pip vs. Virtualenv 命令对比

任务 Conda 命令 Pip 命令 Virtualenv 命令
安装包 conda install $PACKAGE_NAME pip install $PACKAGE_NAME X
更新包 conda update --name $ENVIRONMENT_NAME $PACKAGE_NAME pip install --upgrade $PACKAGE_NAME X
更新包管理器 conda update conda Linux/macOS: pip install -U pip
Win: python -m pip install -U pip
X
卸载包 conda remove --name $ENVIRONMENT_NAME $PACKAGE_NAME pip uninstall $PACKAGE_NAME X
创建环境 conda create --name $ENVIRONMENT_NAME python X cd $ENV_BASE_DIR; virtualenv $ENVIRONMENT_NAME
激活环境 conda activate $ENVIRONMENT_NAME* X source $ENV_BASE_DIR/$ENVIRONMENT_NAME/bin/activate
停用环境 conda deactivate X deactivate
搜索可用包 conda search $SEARCH_TERM pip search $SEARCH_TERM X
从指定来源安装包 conda install --channel $URL $PACKAGE_NAME pip install --index-url $URL $PACKAGE_NAME X
列出已安装的包 conda list --name $ENVIRONMENT_NAME pip list X
创建依赖文件 conda list --export pip freeze X
列出所有环境 conda info --envs X 安装 virtualenv wrapper 后使用 lsvirtualenv
安装其他包管理器 conda install pip pip install conda X
安装 Python conda install python=x.x X X
更新 Python conda update python* X X

备注:

  • conda activate 只适用于 Conda 4.6 及更高版本。在 Conda 4.6 之前的版本中,可以使用以下命令:
    • Windows: activate
    • Linux 和 macOS: source activate
  • conda update python 会更新到该系列的最新版本,因此 Python 2.x 会更新到最新的 2.x 版本,Python 3.x 会更新到最新的 3.x 版本。

conda

conda 是一个开源的包管理器和环境管理器,最初由 Anaconda 提供,支持Python 以及其他语言(如 R、Ruby、Lua)的包管理。conda 不仅能安装和管理 Python 包,还能创建独立的虚拟环境,并安装其他语言的包。

Conda 命令

  • conda activate:激活指定的 Conda 环境,使当前终端会话使用该环境的 Python 和库。
  • conda clean:清理 Conda 缓存,删除不再需要的包和索引,释放磁盘空间。
  • conda compare:比较不同环境中的包或包版本。
  • conda config:配置 Conda 的行为,例如设置源、代理等。
  • conda create:创建一个新的 Conda 环境,并指定环境中的 Python 版本及其他包。
  • conda deactivate:停用当前激活的 Conda 环境。
  • conda doctor:检查 Conda 环境并解决常见问题。
  • conda env:管理 Conda 环境,例如创建、导出环境等。
  • conda info:显示 Conda 环境和配置信息,包括已安装的环境列表。
  • conda init:初始化 Conda,使得 Conda 能够在终端中自动激活和管理环境。
  • conda install:安装指定的包及其依赖,支持从 Conda 仓库或指定的源安装。
  • conda list:列出当前环境中已安装的所有包及其版本。
  • conda notices:显示 Conda 系统的通知信息。
  • conda package:管理 Conda 包,例如安装、更新和删除。
  • conda repoquery:查询 Conda 仓库中的包信息。
  • conda remove:卸载指定的包。
  • conda rename:重命名 Conda 环境。
  • conda run:在指定的环境中运行命令。
  • conda search:搜索 Conda 仓库中的包。
  • conda update:更新指定环境中的包或 Conda 本身。

pip

pipPython 的官方包管理工具,用于安装和管理 Python 包。它从 Python 包索引(PyPI)上下载并安装包

pip venv

venv 是 Python 内建的一个用于创建独立虚拟环境的工具。每个虚拟环境有自己的 Python 解释器和库集合,确保包之间的依赖不冲突。

区别

1. 总体

  • Pip

    • 用途:Pip 是 Python Packaging Authority 推荐的工具,用于从 Python 包索引(PyPI)安装 Python 软件包。
    • 包类型:仅限于 Python 包,安装的包通常是 .whl(wheel)格式,或者是源代码格式(需要编译)。
    • 依赖管理:Pip 安装包时,不会检查环境中的所有包的依赖关系。它会按顺序递归安装依赖,可能会导致依赖冲突或破坏环境的稳定性。
  • Conda

    • 用途:Conda 是一个跨平台的包和环境管理工具,可以从 Anaconda 仓库或 Anaconda Cloud 安装包,支持安装和管理包含 C/C++ 库、R 包等在内的多种软件。
    • 包类型:支持任何类型的软件包,不仅仅是 Python 包,还包括 C、C++、R 等。
    • 依赖管理:Conda 使用 SAT 解算器来确保环境中所有包的依赖关系得到满足,因此可以避免安装包时出现的版本冲突问题。

2. 环境管理

  • Pip:没有内建的环境管理功能,通常依赖 virtualenvvenv 来创建虚拟环境来隔离不同的项目和包依赖。
  • Conda:提供内建的环境管理功能,可以轻松创建和管理不同版本的 Python 及其包,适用于数据科学等领域,不同工具可能需要不同版本的 Python 或库。

3. 安装包时的依赖检查

  • Pip:安装包时没有自动检查依赖,可能会导致环境破损,尤其是在包间依赖关系复杂时。
  • Conda:使用 SAT 解算器自动检查依赖,确保安装的所有包的依赖关系都得到满足,减少环境破损的风险。

有时某些包只在 PyPI 上提供,而不在 Conda 仓库中。此时,使用 conda 安装可用的包,然后使用 pip 安装 PyPI 上的包。尽量优先使用 conda 安装包,尤其是那些包含底层依赖的包。只有在 conda 中找不到所需包时,再使用 pip 来安装 PyPI 上的包。Anaconda 仓库中提供了超过 1500 个包,包括最流行的数据科学、机器学习和 AI 框架。通过 conda 可以安装这些包,以及来自 conda-forge 和 bioconda 等频道的数千个额外包,所有这些都可以通过 conda 安装。尽管这些包的数量庞大,但与 PyPI 上超过 150,000 个包相比,它的数量仍然较少。偶尔会需要某些在 conda 中没有的包,但可以在 PyPI 上找到,并且可以通过 pip 安装。

特性 Conda Pip
支持的包类型 任何类型的软件包(Python、C、C++、R等) 仅支持 Python 包
依赖管理 内建依赖检查,避免冲突 没有内建依赖检查,可能导致环境破损
环境管理 内建环境管理功能 依赖 virtualenvvenv 来创建环境
安装源 Anaconda 仓库与 Cloud PyPI
是否需要编译器 不需要 需要,特别是从源代码安装时
包管理方式 包是预编译的二进制文件 包是源代码或 .whl 格式