Pip install 和Conda install 的区别和使用场景

2023-10-28


一、Conda 和Pip的区别

Conda和pip通常被认为几乎完全相同。虽然这两个工具的某些功能重叠,但它们设计用于不同的目的。 Pip是Python Packaging Authority推荐的用于从Python Package Index安装包的工具。 Pip安装打包为wheels或源代码分发的Python软件。后者可能要求系统安装兼容的编译器和库。

Conda是跨平台的包和环境管理器,可以安装和管理来自Anaconda repository以 Anaconda Cloud的conda包。 Conda包是二进制文件,需要使用编译器来安装它们。另外,conda包不仅限于Python软件。它们还可能包含C或C ++库,R包或任何其他软件。

Pip和conda在如何实现环境中的依赖关系方面也有所不同。安装包时,pip会在递归的串行循环中安装依赖项。没有努力确保同时满足所有包的依赖性。如果较早安装的软件包与稍后安装的软件包具有不兼容的依赖性版本,则可能导致破坏的环境。conda使用可确保满足环境中安装的所有包的所有要求。此检查可能需要额外的时间,但有助于防止创建破坏的环境,前期关于依赖关系包的元数据是正确的。

最后,pip的包跟conda不完全重叠,有些包只能通过其中一个装。

总结:

  • Conda只能在conda环境中安装包,但是可以安装各种语言、各种类型的包。
  • Pip可以在任何环境中安装包,但是只能安装Python包。

二、Pip install和Conda install的区别

1、默认安装路径不同

1.python包

  • conda 安装包路径是
    xxx\Anaconda3\envs\a_conda_env\Lib\site-packages
  • pip 安装包路径在虚拟环境下是 xxxx\Anaconda3\envs\a_conda_env\Lib\site-packages

2.非python包

  • conda 安装包路径是 xxxxx\Anaconda3\pkgs

笔者以当前虚拟环境Thin下安装非Python包 ffmpeg为例:

(Thin) root@348a24e5dea7:/data# conda install ffmpeg    

在这里插入图片描述
如上图所示:可以发现使用conda install 的安装目录的确是在 xxxxx\Anaconda3\pkgs

执行下面的命令又会发现:

(Thin) root@348a24e5dea7:/data# whereis ffmpeg

在这里插入图片描述

值得注意的是:conda install 也会在其关联虚拟环境下的bin目录里生成一个对应的二进制文件,该文件就是执行该程序的命令。

相关问题:

如何修改conda 和pip的默认安装路径?
在conda虚拟环境下使用pip安装包,但却发现虚拟环境里conda list没有导入该包?

解决:

参考下面这篇文章

修改conda环境和缓存默认路径/修改Python 的 pip install 默认安装依赖路径

2、conda list列表数量>pip list

因为1的原因,conda安装多个环境时,因为这些虚拟环境互相关联,所以同一个包只需要安装一次,且在同一个目录里,由conda通用管理,而pip每次安装只是在当前的虚拟环境下。
pip list:
在这里插入图片描述

conda list:
conda list
由前文可知Conda是跨平台的包和环境管理器,所以在上图 Build Channel 里可以看到conda 可以管理各种类型的包。

总结

  • Conda list 除了可以查询当前虚拟环境和关联环境下的python包,还有非python包。

  • Pip list 只能查询当前虚拟环境下的pyhon包。

当关联环境下有这个包,再用conda在其他虚拟环境下下载该包
就会直接关联,不用下载。
比如说base环境下有包,在另一个环境下载同样的包,就会关联上,不用真的下载,直接复制过去或者关联即可

验证得到:pip下的list是conda下list的子集。

相关问题:

在conda配置的环境下,使用conda install 命令安装python包,在编写python程序import时,容易报“ImportError: DLL load failed: 找不到指定的模块。”错误。

解决:

  1. 使用conda uninstall 命令将指定包卸载
  2. 使用 pip install命令重新安装。

3、优先级不同

  1. conda 会覆盖pip安装的包,pip 不会覆盖conda的包。
  2. 尽量避免混用,如果必须要混用,先用conda再用pip。

三、Pip install和Conda install的使用场景

1、适用范围

由前文可知pip是python包管理器,而conda是跨平台的通用管理器。
conda是用来安装conda package,虽然大部分conda包是python的,但它支持了不少非python语言写的依赖项,比如mkl cuda这种c c++写的包。不过anaconda本身只提供部分包,远没有pip提供的包多,有时conda无法安装我们需要的包,我们需要用pip将其装到conda环境里。
因此安装之前需要清楚什么是python包非python包

1. python包:

顾名思义,是需要在python环境下面使用并且可以import 的包。
并且如果在shell里直接输入该包名,系统也会无法识别。以numpy为例:
在这里插入图片描述

2. 非python包:

即非python语言所写的包,该包的安装的安装路径会被写入环境变量,因此shell可以直接识别,以ffmpeg为例:
在这里插入图片描述

2、使用场景

1. 对于绝大多数python包,既可以通过pip install 也可以通过conda install 来安装。
2. 对于一小部分非python包,则必须通过conda install 来安装。

以安装ensorflow-gpu 为例,同时需要注意:

① 用 pip 安装的话,只会安装 tensorflow-gpu 这个包,它的依赖(比如 cuda)需要手动安装,而且版本配置不对的话,可能导致 tensorflow-gpu 无法使用;
② 用 conda 安装的话,除了安装 tensorflow-gpu 这个包,它会自动检测这个包所需的依赖,如果没有,会自动安装一遍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pip install 和Conda install 的区别和使用场景 的相关文章

随机推荐

  • 接口自动化get请求一些小知识点

    get 请求 requests get get请求的参数可以写在url里 写在url里时 参数和url之间需要加 get 请求的参数可以不写在url里 可以组织为字典传给参数param get 请求可以不传参数 获取响应信息 r reque
  • React之Hook(四)——使用 Effect Hook

    Effect Hook 可以让你在函数组件中执行副作用操作 import React useState useEffect from react function Example const count setCount useState
  • Doris数据划分

    数据划分 基本概念 Row Column 一张表包含行 Row 和列 Column Column可以分为两大类 Key和Value Tablet Partition 在Doris的存储引擎中 用户数据被水平划分为若干个数据分片 Tablet
  • Android面试题(32)-android编译过程和安装流程

    android app的编译过程 从网上拷了一张图 这张图很好的讲述了android的编译打包过程 接下来就具体的分析分析 大致分为7步 1 aapt Android Asset Packaging Tool android构建工具 在an
  • 网络前三层(物理,数据链路层,网络)数据包传输过程

    前三层 起始 第一层 物理层 hub 第二层 数据链路层 交换机 第三层 网络层 路由器 起始 起始 我就是一台电脑A 有一天 突然另一台电脑B想和我进行通话 于是我们各自开了个网口 用一根网线连接起来 这样就可以进行通信了 至于为什么可以
  • 教你如何使用解决keil编译大小限制问题

    关于上一篇我们讲解到可能刚接触keil的人会因为没有使用注册机 好像不能使用注册机 所以就缩写吧 导致编译超出32K文件时候会报错的问题 于是在这一篇我们就来好好讲解一下如何使用keil注册机去破解keil 解决方法 参考我的这篇文章 因为
  • PyQt中QLabel背景与字体的一些设置

    本文原创 原文地址 http blog csdn net jiuzuidongpo article details 45485127 一般来说 对QLabel的背景和字体设置的话 有两种方法 一种是使用样式表 就是stypesheet 另一
  • 华为OD机试 - 九宫格(Java)

    题目描述 九宫格是一款广为流传的游戏 起源于河图洛书 游戏规则是 1到9九个数字放在3 3的格子中 要求每行 每列以及两个对角线上的三数之和都等于15 在金麻名著 射雕英雄传 中黃蓉曾给九宫格的一种解法 口诀 戴九恩一 左三右七 二四有肩
  • 脉冲星测时软件TEMPO2安装

    下载 https bitbucket org psrsoft tempo2 downloads 在安装TEMPO2之前需要安装pgplot FFTW CFITSIO等数学库 安装时 注意运行 configure后输出的日志信息 会提示是否缺
  • 2021-Twins: Revisiting the Design of Spatial Attention

    文章目录 1 Title 2 Summary 3 Problem Statement 4 Method s 4 1 Twins PCPVT 4 2 Twins SVT 4 2 1 Locally Grouped Self Attention
  • node.js(读取文件)

    fs fs 模块是Node js官方提供的 用来操作文件的模块 它提供了一系列的方法和属性 用来满足用户对文件的操作需求 读取文件 fs readFile 读取文件 1 导入fs模块 来操作文件 const fs require fs 2
  • glibc版本查看_glibc做版本兼容的原理介绍

    相关技术叫 compact symbols 当我们比如查看libc 2 29 so的dynamic symbol table的时候 我们可以看到3个glob64的实现 随后你的程序要refer对应的glob64 这时 你的dynamic l
  • qt自定义MessageBox

    头文件 ifndef HINT INTERFACE H define HINT INTERFACE H include
  • docker 安装卸载及常用命令

    Docker 镜像与容器 1 安装卸载docker 1 1 卸载docker 1 1 1 查看已安装的docker列表 root centos7 yum list installed grep docker containerd io x8
  • Python、pip以及libsvm等的安装

    从python官网下载并安装python https www python org downloads windows 设置python的环境变量 命令行输入python 如下安装成功 安装pip 到官网下载pip https pypi p
  • Unity——控制物体移动的方法

    控制物体移动的三种方法 一 常规方法 四个方向 if Input GetKey KeyCode W transform Translate Vector3 forward moveSpeed Time deltaTime if Input
  • android的模拟器闪动处理

    为什么80 的码农都做不了架构师 gt gt gt 今天 建立了一个示例android项目 运行的时候 模拟器每隔几秒便闪一下 开始以为是项目的问题 或者版本 v16 的问题 换了其他 还是闪动 网上查了下 只有一人遇到 http zhid
  • 一些在线图床工具

    以下排列按个人喜爱程度 SM MS https sm ms 和picgo搭配 非常哇塞 普通用户只有5G 不算很大 对我来说够用了 举例 https sm ms image fiNMYZ5pxycUmjX 路过图床 https imgchr
  • C#中字符串判断EndsWith和Contains的效率比较

    关于字符串的判断 EndsWith和Contains下面做了两个简单的例子 运行后测试了一下所耗时间 public void TestContains DateTime starTime DateTime Now string str 20
  • Pip install 和Conda install 的区别和使用场景

    文章目录 一 Conda 和Pip的区别 总结 二 Pip install和Conda install的区别 1 默认安装路径不同 1 python包 2 非python包 相关问题 解决 2 conda list列表数量 gt pip l