有关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 格式
相关推荐
咋吃都不胖lyh11 小时前
python -m venv(Python 内置虚拟环境工具)和 conda create(Anaconda/Miniconda 环境管理工具)
python·环境
像风一样自由202012 小时前
基于PyTorch实现U-Net的路面裂缝检测系统
人工智能·pytorch·python
九死九歌12 小时前
【Sympydantic】使用sympydantic,利用pydantic告别numpy与pytorch编程中,tensor形状带来的烦人痛点!
开发语言·pytorch·python·机器学习·numpy·pydantic
Dxy123931021612 小时前
Python如何把二进制文本转PIL图片对象
python
Sleepy MargulisItG12 小时前
【Linux网络编程】UDP Socket
linux·网络·udp
武藤一雄12 小时前
[.NET] 中 System.Collections.Generic命名空间详解
windows·微软·c#·asp.net·.net·.netcore
540_54012 小时前
ADVANCE Day22_复习日
人工智能·python·机器学习
尐葮阿譽12 小时前
Ubuntu 25.10 安装 Waydroid 安卓模拟器
android·ubuntu·安卓模拟器·waydroid
QT 小鲜肉12 小时前
【Linux命令大全】001.文件管理(理论篇)
linux·数据库·chrome·笔记
我一定会有钱12 小时前
Python数据类型
python