python包管理器--- pip、conda、mamba的比较

1 pip

1.1 简介

        pip是一个 Python 的包(Package)管理工具,用于从 PyPI 安装和管理 Python 标准库之外的其他包(第三方包)。从 Python 3.4 起,pip 已经成为 Python 安装程序的一部分,也是官方标准的 Python 包管理器,由 PyPA 组织更新维护。

1.2 常用命令

        这里,我同时补充下关于pip的一些更新、卸载的方法:
(1)pip 自身的升级

py -m pip install --upgrade pip

(2)pip安装/卸载/升级

pip install 包名              #安装
pip uninstall 包名            #卸载
pip install --upgrade 包名    #升级


(3)pip查看已安装的包

pip list

(4)pip检查哪些包需要更新:

pip list --outdated

(5)pip查看某个包的详细信息:

pip show 包名

(6)pip安装指定版本的包:

pip install 包名==版本号
例如:
pip install numpy==1.20.3
pip install 'matplotlib>3.4'
pip install 'matplotlib>3.4.0,<3.4.3'  #可通过使用==, >=, <=, >, <来指定版本号

2 conda

        Conda是适用于任何语言的软件包、依赖项和环境管理系统--包括Python,R,Ruby,Lua,Scala,Java,JavaScript,C / C ++,FORTRAN等。

        Conda是在Windows、macOS和Linux上运行的开源软件包管理系统和环境管理系统。Conda可以快速安装、运行和更新软件包及其依赖项。Conda可以轻松地在本地计算机上的环境中创建,保存,加载和切换。它是为Python程序创建的,但可以打包和分发适用于任何语言的软件。

        Conda作为软件包管理器,可以帮助您查找和安装软件包。如果您需要一个能够使用不同版本Python的软件包,则无需切换到其他环境管理器,因为conda也是环境管理器。

2.1 pip和conda的关系[1]

1.conda 和pip简介

       在很多时候,由于conda和pip两个命令的某些功能存在重叠(比如可以用来安装第三方包),所以很多人认为他们是一样的。

       Pip是Python Packaging Authority(PyPA,是一个工作组,负责维护 python包中使用的一系列核心软件)推荐用来从Python Package Index(PyPI,是由PyPA开发的python包构成的索引包)下载第三方包的工具【官方推荐工具】。Pip可以用来下载和安装.whl和源码格式的包,其中用pip进行源码安装可能会要求系统中已经成功安装了兼容的编译器以及必要的包。

        conda 则是一个跨平台的包和环境管理器,用于从Anaconda和Anaconda Cloud中安装和管理conda包。因为conda 包是二进制文件,所以我们不需要编译器来对它们进行编译,这是一个与pip不同的地方。此外,conda 包并不仅限于 安装Python软件,还可以借助conda来安装包含 C 或 C++ 包、R 包在内的任何其他软件。

2.conda和pip的主要区别【米氏对比法】

        Conda和pip虽然在某些功能上重叠,但两者也存在着许多不同,各有各的优缺点,详细可以见下表。

(1)包内容【不重要,下一个】

     conda:     二进制

     pip:.         whl和源码

(2)是否需要编译【不重要,下一个】

     conda:     不需要

     pip:.         需要

(3)安装包类型【有点重要,但不大】

     conda:     Python、C、R等任何类型【win】

     pip:.         仅Python

 (4)是否支持环境管理【很重要,划重点 No.1】

     conda:     是否支持环境管理【win】

     pip:.         否,需要借助 virtualenv or venv等其它工具

       这两个工具之间的一个关键区别是conda能够创建独立的环境,这些环境可以包含不同版本的Python安装在其中的包。这在实际操作非常有用,因为不同的工具可能包含相互冲突的需求,这可能会阻止它们全部安装到单个环境中。Pip没有对环境的内置支持,而是依赖于virtualenv或venv等其他工具来创建孤立的环境。pipenv、poetry和hatch等工具包装了pip和virtualenv,为处理这些环境提供了统一的方法。

(5)依赖包检查【很重要,划重点 No.2】

     conda:     检查十分严格【win】

     pip:.         检查不严格

        conda对于环境中依赖关系的检查非常严格,所以基本上只要conda能安装上,软件包就能使用,但如果是使用pip的话,可能某些时候尽管显示你已成功安装,但由于包与包之间的依赖关系不满足,软件包会出现无法使用的情况。这主要是由于在安装软件包时,pip会在递归的串行循环中安装依赖项,并不能确保所有包的依赖关系同时满足。比如说若在安装顺序中较早安装的软件包与较晚安装的软件包具有不兼容的依赖项版本,就可能会导致环境错误,即使安装上也无法正常使用。而conda则会使用可满足性求解器(SAT)来验证是否满足环境中安装的所有软件包的全部要求。虽然这个检查可能需要一些额外的时间,但有利于防止出现上面环境不满足的现象。

(6)包来源【不重要,下一个】

     conda:     Anaconda repo and cloud

     pip:.         PyPI

(7)包数量【很重要,划重点 No.3】

     conda:     约1500个【no win,but only little lose】

     pip:.         约150000个【win】

中心思想:先conda,后pip,方得无往而不利【组合技才能屠龙】

       优先使用conda,因为上述1、2、3点,这三点在实践中非常重要,非常重要,非常重要!!!

       其次使用pip,虽然Anaconda存储库中有超过1500个软件包,包括最流行的数据科学、机器学习和人工智能框架。这些软件包,以及Anaconda cloud上来自channel的数千个附加软件包,包括conda-forge和bioconda,都可以使用conda进行安装。尽管有这么大的包集合,但与PyPI上超过150,000个可用的包相比,它仍然很小。有时需要一个包,它不是conda包,但在PyPI上可用,可以用pip安装。

3 mamba(给conda提提速)【推荐】

3.1 简介

        Conda作为使用最为广泛的数据科学环境管理工具,可以协助我们很方便的完成创建管理环境、下载安装第三方库、软件包等操作,但其在下载资源的过程中下载速度时常令人捉急,即使使用连接速度更快的国内镜像,也摆脱不了其单线程挨个下载资源导致的低效问题。

        而Mamba(黑曼巴)专为加速Conda而生,其改写了Conda下载资源的固有方式,以多线程的方式对网络资源进行并行下载,从而大幅提升Conda效率:

3.2 Mamba的使用[2]

1.安装Mamba

conda install -c conda-forge mamba

        安装完成之后,当你运行mamba -V查看其版本时会发现返回的是Conda的版本信息,这是因为Mamba的本质是对Conda功能的覆盖,因此我们在使用Mamba时其实只要将原有的Conda语句中的conda替换为mamba即可,譬如我们常用的conda clean --all,即清空本地缓存安装包。

        很有意思的是Mamba在执行命令时会先打印出logo等信息。

        当然Mamba并不是重写了Conda所有的功能,只是针对一些Conda低效的功能进行重写,并添加了一些实用的新功能,接下来我们来对这些知识进行学习。

2. Mamba中的实用功能

  • 加速下载

        作为Mamba最核心的功能,Mambaconda install语句进行并行化改造,达到加速下载过程的目的。

        以下载qgis为例,使用mamba install -c conda-forge qgis -y代替以前的安装方式,执行命令后,Mamba会在短暂获取资源下载链接之后,以并行的方式按计划同时下载多个资源,比老方法要快很多:

图片

        对于其他涉及下载资源的命令譬如conda update同样适用,大家可以自行体验。

  • 查看指定库所有可用版本

        这是Mamba异于Conda的新功能,使用mamba repoquery search 库名可以查看指定库全部所有可用版本。

  • 查看依赖关系

        Mamba中还提供了mamba repoquery dependsmamba repoquery whoneeds,分别用于查看指定库依赖哪些库,以及指定库被哪些库依赖,如官方文档的示例:

图片

4 升华中心思想

        先mamba(可以仍使用conda),后pip,方得无往而不利!【屠龙技也得升级】

5 参考资料链接

1.Anaconda | Understanding Conda and Pip[1]

2.Conda太慢?试试这个加速工具![2]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IO流及字符集

IO流 作用&#xff1a; 用于读写文件中的数据 分类&#xff1a; 图来自黑马程序员网课 纯文本文件&#xff1a;Windows自带的记事本打开能读懂的文件&#xff0c;word excel不是纯文本文件 图来自黑马程序员网课 FileOutputStream: 操作本地文件的字节输出流&#xff0c;可…

板凳------56.Linux/Unix 系统编程手册(下) -- SOCKET 介绍

56.1.概述 socket 是一种IPC方法&#xff0c;允许位于同一主机或使用网络连接起来的不同主机上的应用程序之间交换数据。 UNIX 允许位于同一主机系统上的应用程序之间通信 Internet domain IPv4 and IPV6 // socket 通信方式 1.各个应用程序创建一个socket&#xff0c;socket是…

vue3:实现图片放大浏览功能组件

两种实现方式&#xff1a; 1.将原本的盒子与img标签放大至全屏浏览。 2.新建一个div和img标签进行全屏浏览。这样不会改变布局。 第一种&#xff1a; 效果&#xff1a; 组件代码&#xff1a; <template><div :class"isScreen ? fullImg : norImg">…

Confluence是否免费?你需要知道的都在这里!

根据Atlassian官方信息&#xff0c;可以确定的是 Confluence 并不免费&#xff0c;但为10人以下团队提供了免费版本。免费版可以使用不限量的页面、空间&#xff0c;但只有2GB的存储空间和3个活动白板。但国内有不少公司通过使用破解版的方式来免费使用Cofluence。下面本文将详…

【什么!Grok记录被打破了】坏消息不是Meta的 llama3 400,好消息是Nvidia发布的Nemotron-4 340B且支持开源

Nvidia 发布了开创性的开放模型系列 “Nemotron-4 340B”&#xff0c;再次巩固了其作为人工智能创新领域无可争议的领导者的地位。这一发展标志着人工智能行业的一个重要里程碑&#xff0c;因为它使各行各业的企业能够创建功能强大的特定领域 LLM&#xff0c;而无需大量昂贵的真…

深入分析 Android BroadcastReceiver (三)

文章目录 深入分析 Android BroadcastReceiver (三)1. 广播消息的优缺点及使用场景1.1 优点1.2 缺点 2. 广播的使用场景及代码示例2.1. 系统广播示例&#xff1a;监听网络状态变化 2.2. 自定义广播示例&#xff1a;发送自定义广播 2.3. 有序广播示例&#xff1a;有序广播 2.4. …

线代知识点总结

目录 一.初等行/列变换 1.计算行列式时&#xff0c;行列变换都可 2.求矩阵的秩时&#xff0c;行列变换都可 3.解线性方程组时&#xff0c;仅能使用初等行变换 4.判定解的情况&#xff0c;单纯求r(A),r(A,b)的过程行列变换都可 5.求向量组极大无关组、线性表出关系&#x…

汽车级TPSI2140QDWQRQ1隔离式固态继电器,TMUX6136PWR、TMUX1109PWR、TMUX1133PWR模拟开关与多路复用器(参数)

1、TPSI2140-Q1 是一款隔离式固态继电器&#xff0c;专为高电压汽车和工业应用而设计。 TPSI2140-Q1 与 TI 具有高可靠性的电容隔离技术和内部背对背 MOSFET 整合在一起&#xff0c;形成了一款完全集成式解决方案&#xff0c;无需次级侧电源。 该器件的初级侧仅由 9mA 的输入电…

线程介绍及其Java如何用Thread 类创建线程和操作线程方法

目录 一、进程和线程1.1 进程特征 2.2 线程特征 2.3 区别 二、利用Thread类创建线程2.1 通过创建Thread子类&#xff0c;重写run()方法2.2 通过实现Runnable接口&#xff0c;重写run()方法2.3. Callable接口 FutureTask 创建线程2.3 三种方法区别1. 通过创建Thread子类&#x…

SQL深度解析:掌握这些技巧,让你的数据库查询如虎添翼!

前言 随着大数据时代的来临&#xff0c;数据库的角色愈发重要。SQL作为使用最为广泛的数据查询语言&#xff0c;其深度解析与优化对于数据密集型应用来说至关重要。掌握高级SQL技巧不仅可以提升开发效率&#xff0c;还能显著提高数据查询的性能和灵活性。本文将探讨一些关键的S…

修改SubVI的LabVIEW默认搜索路径

在启动顶级VI后&#xff0c;LabVIEW可能会遇到找不到subVI的情况。这通常是由于subVI的路径发生了变化或没有被正确配置。 LabVIEW默认搜索路径 默认情况下&#xff0c;LabVIEW会按以下顺序搜索文件位置&#xff08;*表示LabVIEW将搜索子目录&#xff09;&#xff1a; <t…

如何从印刷体的图片中把手写体部分统统去掉?--免费途径

AI图像处理技术 我是从国外某个网站上找到在线AI免费credit的处理方式的。国内的基本没有全功能试用、或者即使收费也不好用。 国内的差距主要是&#xff1a;1、对图片分辨率和大小有更多限制&#xff0c;即使收费用户也是&#xff1b;2、需要安装app之类&#xff0c;然后连线…

MongoDB使用$addToSet向数组中添加元素

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第66篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

驱动开发(四):Linux内核中断

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;内核层控制硬件层 驱动开发&#xff08;四&#xf…

java:一个springfox swagger2的简单例子

# 示例程序 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version> </dependency> <dependency><groupId>…

视图-什么是(VIEW)?怎么创建(CREATE VIEW)?怎么删除(DROP)?怎么用(SELECT/INSERT/UPDATE/DELETE)?

一、引言 之前对数据库的操作都是针对基本关系表&#xff0c;操作都是在数据库的全局逻辑模式上进行的&#xff0c;而在实际的数据库系统中&#xff0c;可能用户只关心或只被允许使用数据库中的某些基本关系表或基本关系表中的某些属性列&#xff0c;这些数据构成了数据库的外…

vue(v-if,v-else-if-else-show)

基本应用 例子 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTE-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

LabView_波形控件

波形图表 将一定数量的数据点存储在缓冲区&#xff0c;并通过这种方式存储并显示这些数据点。当缓冲区被填满后&#xff0c;波形图表将会用新的数据点覆盖缓冲区中存在时间最久的数据点。 当数据点可用时&#xff0c;波形图表将显示已有的数据点外加最新接收到的数据点 。 您可…

NVIDIA Triton系列02-功能与架构简介

NVIDIA Triton系列02-功能与架构简介 B站&#xff1a;肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 博客&#xff1a;肆十二-CSDN博客 问答&#xff1a;(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com) 前面文章介绍微软 Teams 会议系统、微信软件与腾讯…

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码&#xff0c;喜欢的朋友可以下载研究 一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码