有关pip与conda的介绍

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 env remove --name 环境名称
搜索可用包 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 格式
相关推荐
IVEN_5 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang7 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮7 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling7 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮10 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
阿白的白日梦10 小时前
winget基础管理---更新/修改源为国内源
windows
曲幽10 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健1 天前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python