conda install 与 pip install的区别

本文比较了conda和pip作为Python包管理器的区别,包括支持的语言、Repo源、包的内容、环境隔离、依赖关系及库的储存位置等内容。
部署运行你感兴趣的模型镜像

前言

conda installpip install一般被认为是几乎相同的,但这两个工具虽然功能存在部分重叠,但其设计的目的是不同的。

一.使用区别

支持语言:

  • pippython 官方推荐的包下载工具,但是只能安装python包
  • conda 是一个跨平台(支持linux, mac, win)的通用包和环境管理器,它除了支持python外,还能安装各种其他语言的包,例如 C/C++, R语言等

Repo源:

  • pipPyPIPython Package Index)上拉取数据。上面的数据更新更及时,涵盖的内容也更加全面
  • condaAnaconda.org 上拉取数据。虽然Anaconda上有一些主流Python包,但在数量级上明显少于PyPI,缺少一些小众的包

包的内容

  • pip 里的软件包为wheel版或源代码发行版。wheel属于已编译发新版的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是在用户的机子上进行的,需要注意的是源码格式的包通常需要系统内安装了兼容的编译工具和所需要的库文件。
  • conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译

环境隔离

  • pip 没有内置支持环境隔离,只能借助其他工具例如virtualenv or venv实现环境隔离
  • conda 有能力直接创建隔离的环境

依赖关系

  • pip安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。
  • pip install通过循环递归的方式安装依赖,这一点我们可以理解为只要碰到没有安装的依赖包就进行安装,直到安装完毕,很粗暴简单,但是随之带来的问题就是安装过程不稳定,比如安装过程中先安装的软件包的依赖和后安装的软件包的依赖产生冲突,整个安装过程就会崩坏。
  • conda会检查当前环境下所有包之间的依赖关系,保证当前环境里的所有包的所有依赖都会被满足

库的储存位置

  • conda虚拟环境下使用 pip install 安装的库: 如果使用系统的的python,则库会被保存在 ~/.local/lib/python3.x/site-packages 文件夹中;如果使用的是conda内置的python,则会被保存到 anaconda3/envs/current_env/lib/site-packages中。
  • conda install 安装的库都会放在anaconda3/pkgs目录下。这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载

三 使用总结

推荐使用conda创建虚拟环境,能用conda安装的就先用conda(conda下载是真的慢,就算换源了还是慢,下大点的文件还容易失败),不行再使用pip安装。

参考

参考一
参考二
参考三

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### conda install pip install区别 conda pipPython 社区中两种常用的包管理工具,但它们在功能、适用场景以及安装机制等方面存在显著差异。以下是两者的详细对比: #### 1. 工具定位 - **conda** 是一个通用的包环境管理工具,支持多种编程语言(如 Python、R、C/C++ 等),并且能够管理非 Python 的依赖项[^3]。 - **pip** 是 Python 官方推荐的包管理工具,主要用于安装管理纯 Python 包[^3]。 #### 2. 环境管理能力 - **conda** 提供了强大的环境管理功能,允许用户轻松创建、激活、删除虚拟环境,并且可以跨平台使用[^2]。 - **pip** 虽然可以通过 `venv` 或者 `virtualenv` 实现环境隔离,但在复杂依赖管理跨平台支持方面不如 conda。 #### 3. 包来源 - **conda** 默认从 Anaconda 的官方仓库(如 `defaults` 或 `conda-forge`)下载包,这些仓库中的包通常经过严格测试,确保兼容性稳定性[^1]。 - **pip** 默认从 PyPI(Python Package Index)下载包,PyPI 是一个庞大的 Python 包集合,但某些包可能缺乏对特定平台或依赖的支持[^1]。 #### 4. 依赖解决机制 - **conda** 在安装包时会检查并自动解决所有依赖关系,确保整个环境的稳定性一致性。然而,如果环境中同时存在通过 pip conda 安装的包,可能会导致依赖冲突问题[^4]。 - **pip** 在安装包时仅关注当前包的依赖,而不考虑其他已安装包的版本兼容性。因此,在复杂项目中,pip 可能会导致依赖冲突[^4]。 #### 5. 安装优先级 - 在实际使用中,建议优先使用 **conda install**,因为它更稳定且能更好地解决复杂的依赖问题。 - 当目标包无法通过 conda 获取时,可以作为备选方案使用 **pip install**[^1]。 #### 6. 混用注意事项 如果需要同时使用 conda pip 安装包,应遵循以下原则: - 先使用 conda 安装尽可能多的包,后使用 pip 安装剩余的包,以减少潜在的依赖冲突。 - 避免在同一环境中混用 conda pip 安装相同功能的包,否则可能导致冲突或运行错误[^4]。 ```python # 示例:优先使用 conda 安装,再使用 pip 安装 # 使用 conda 安装 numpy !conda install numpy -c defaults # 如果 conda 中没有目标包,则使用 pip 安装 !pip install some-package ``` ### 总结 - **conda** 更适合数据科学、机器学习等需要复杂依赖管理环境隔离的场景。 - **pip** 更适合纯 Python 项目轻量级开发需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值