找回密码
 会员注册
查看: 45|回复: 0

Mamba-可替代Conda的Python包管理工具

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
73512
发表于 2024-9-3 23:07:53 | 显示全部楼层 |阅读模式
文章目录一、关于Mamba二、安装Mamba1、全新安装(推荐)(Miniforge2、现有`conda`安装(不推荐)3、Docker镜像4、Condalibmamba求解器三、安装Micromamba1、使用操作系统包管理器Homebrew2、从Mamba-orgreleases安装1)自动安装(推荐)2)自我更新3)手动安装Linux和macOSWindows3、Nightlybuilds4、Docker镜像5、从源代码构建6、Shell补全四、概念1、Prefix/Environment2、根前缀3、基础环境4、激活/停用激活停用五、Mamba用户指南快速开始`mamba`与`conda`CLISpecification文件Repoquery六、Micromamba用户指南快速入门Specification文件简单文本规范文件CondaYAML规范文件显式规范文件`conda-lock`YAML规范文件一、关于MambaMamba是一个快速、强大、跨平台的包管理器。它可以在Windows、OSX和Linux(包括ARM64和PPC64LE)上运行,并且与conda软件包完全兼容并支持大多数conda命令。文档:https://mamba.readthedocs.io/en/latest/index.html相关文章/博客如何评价mamba,是一个比conda更优秀的包管理器吗?(主要反馈就是快)https://www.zhihu.com/question/539017762mamba-org组织拥有多种Mamba风格:mamba:基于Python的CLI,被认为是conda的直接替代品,提供更快的速度和更可靠的环境解决方案micromamba:基于纯C++的CLI,独立于单文件可执行文件中libmamba:一个公开低级和高级API的C++库,在其上构建了mamba和micromamba。注:在本文档中,Mamba将指所有flavors,而特定flavor的详细信息将提及mamba、micromamba或libmamba。micromamba特别适合CI用例,但不仅限于此!二、安装Mamba1、全新安装(推荐)(Miniforge我们建议您从Miniforge发行版>=Miniforge3-22.3.1-0开始。如果您需要旧版本的Mamba,请使用Mambaforge发行版。Miniforge预配置了流行的conda-forge通道,但您可以修改配置以使用您喜欢的任何通道。安装成功后,您可以按照mamba用户指南中的说明使用mamba命令。注意:安装后,请确保您没有配置Anaconda默认通道。不要在base环境中安装任何东西,因为这可能会破坏您的安装。详细信息请参见此处。2、现有conda安装(不推荐)警告:不推荐这种安装Mamba的方式。我们强烈建议使用Miniforge方法(见上文)。要获取mamba,只需从conda-forge通道安装到基础环境中即可:#NOTRECOMMENDED:Thismethodofinstallationisnotrecommended,preferMiniforgeinstead(seeabove)#condainstall-nbase--override-channels-cconda-forgemamba'python_abi=*=*cp*'12注:将mamba不支持安装到base之外的环境中。3、Docker镜像除了Miniforge独立发行版(见上文)之外,还有condaforge/miniforge3docker镜像:dockerrun-it--rmcondaforge/miniforge3:latestmambainfo14、Condalibmamba求解器为了获得与快速Mamba求解器完全兼容的conda体验,conda-libmamba-solver现在默认随Conda一起提供。只需使用最新版本的Conda即可享受速度提升。三、安装Micromambamicromamba是完全静态链接的、独立的、可执行的。这意味着base环境完全是空的。micromamba的配置略有不同,即所有环境和缓存都会默认创建在MAMBA_ROOT_PREFIX环境变量下。也没有预先配置micromamba附带的.condarc/.mambarc(但如果存在,它们仍然会被读取)。1、使用操作系统包管理器Homebrew在macOS上,您可以micromamba从Homebrew安装:brewinstallmicromamba12、从Mamba-orgreleases安装1)自动安装(推荐)注:这是安装micromamba的推荐方法。如果您使用的是macOS、Linux或Windows上的GitBash,有一种简单的方法可以安装micromamba.只需在您喜欢的shell中执行安装脚本即可。对于Linux、macOS或Windows上的GitBash,请使用以下命令安装:"${SHELL}"rc1输入命令时只需点击即可完成。例如,以下命令将帮助您选择要激活的命名环境:micromambaactivate1四、概念Mamba本文档中也广泛使用了一些概念。您应该从熟悉这些内容开始。1、Prefix/Environment在类Unix平台中,安装一个软件包括将文件放置在“安装前缀”的子目录中:没有文件放置在安装前缀之外依赖项必须安装在相同的前缀(或优先级较低的标准系统前缀)中注:Unix上的示例:文件系统的根、/usr/和/usr/local/目录。前缀是一个完全独立且可移植的安装*。*为了与根前缀消除歧义,前缀通常称为目标前缀。如果没有显式的目标或根前缀,您可以假设它引用目标前缀。环境只是目标前缀的另一个名称。Mamba的环境类似于Pythonvirtualenv和类似软件中的虚拟环境,但功能更强大,因为Mamba还管理本机依赖项并将虚拟环境概念推广到许多编程语言。2、根前缀当第一次下载包的索引以解析环境或包本身时,会生成一个缓存以加速将来的操作:该索引有一个可配置的生存时间(TTL),在此期间它将被视为有效包优先硬链接到缓存位置此缓存由基于相同*根前缀的所有环境或目标前缀共享。*基本上,该缓存目录是位于$root_prefix/pkgs/的子目录。根前缀还提供了一种方便的结构来存储环境$root_prefix/envs/,即使您可以在其他地方自由创建环境。3、基础环境基本环境是位于根前缀的环境。这是实施过程中留下的遗留环境conda,目前仍被大量使用。基本环境包含conda和mamba安装以及Python安装(因为需要mamba和condaPython才能运行)。mamba和conda本身是Python包,安装在基础环境中,使得CLI在基于此*基础环境的所有激活环境中可用。注:您不能使用基本create环境,因为它已经是根前缀结构的一部分。直接在baseinstall代替。4、激活/停用激活环境的激活使其所有内容可供您的shell使用。它主要将目标前缀子目录添加到您的$PATH环境变量中。注:激活的实现取决于平台。从另一个环境激活时,您可以选择stack,或不在当前激活的环境。Stacking将产生一个新的中间前缀:systemprefix1此过程完成后,您可以通过mambaactivate调用activate虚拟环境。例如,要从conda-forge频道安装JupyterLab然后运行它,您可以使用以下命令:mambacreate-nmyjlabenvjupyterlab-cconda-forgemambaactivatemyjlabenv#activateourenvironmentjupyterlab#thiswillstartupjupyterlabandopenabrowser123激活环境后,mambainstall可用于将更多软件包安装到环境中。mambaactivatemyjlabenvmambainstallbqplot#nowyoucanusebqplotinmyjlabenvmambainstall"matplotlib>=3.5.0"cartopy#nowyouinstalledmatplotlibwithversion>=3.5.0anddefaultversionofcartopy123mamba与condaCLImamba是一个直接替代品,并使用与conda相同的命令和配置选项。您可以在conda和mamba之间交换几乎所有命令:mambainstall...mambacreate-n...-c......mambalist123Specification文件mamba支持与相同的环境规范文件格式conda。注意:虽然micromamba支持conda-lock“统一”锁定文件,但Mamba目前不支持。Repoquerymamba具有condastock之上的功能。要高效地查询存储库和查询包依赖关系,您可以使用mambarepoquery。这里有些例子:#willshowyouallavailablextensorpackages.$mambarepoquerysearchxtensor#youcanalsospecifymoreconstraintsonthissearchquery$mambarepoquerysearch"xtensor>=0.18"#willshowyoualistofthedirectdependenciesofxtensor.$mambarepoquerydependsxtensor#willshowyoualistofthedependencies(includingdependenciesofdependencies).$mambarepoquerydependsxtensor--recursive1234567891011--recursive标志还显示依赖包的递归(即传递)依赖关系,而不仅仅是直接依赖关系。通过-t,--tree标志,您可以在树中获得与递归查询相同的信息。$mambarepoquerydepends-txtensorxtensor==0.21.5├─libgcc-ng[>=7.3.0]│├─_libgcc_mutex[0.1conda_forge]│└─_openmp_mutex[>=4.5]│├─_libgcc_mutexalreadyvisited│└─libgomp[>=7.3.0]│└─_libgcc_mutexalreadyvisited├─libstdcxx-ng[>=7.3.0]└─xtl[>=0.6.9,=7.23.1pkgs/mainipywidgets7.6.5pyhd3eb1b0_1ipython>=4.0.0pkgs/main1234567通过-t,--tree标志,您可以在树中获取相同的信息。$mambarepoquerywhoneeds-tipythonipython[8.2.0]├─jupyter_console[6.4.3]│└─jupyter[1.0.0]├─ipykernel[6.9.1]│├─notebook[6.4.8]││├─widgetsnbextension[3.5.2]│││└─ipywidgets[7.6.5]│││└─jupyteralreadyvisited││└─jupyteralreadyvisited│├─jupyter_consolealreadyvisited│├─ipywidgetsalreadyvisited│├─jupyteralreadyvisited│└─qtconsole[5.3.0]│└─jupyteralreadyvisited└─ipywidgetsalreadyvisited1234567891011121314151617注:depends和whoneeds子命令要求在您的环境中安装指定的软件包,或者使用-c,--channel标志指定通道。当search使用子命令而未明确指定通道(使用前面提到的标志)时,将考虑配置期间设置的通道来执行搜索。六、Micromamba用户指南micromamba是包管理器mamba的微型版本。它是一个静态链接的C++可执行文件,具有单独的命令行界面。它不需要base环境,也没有默认版本的Python。快速入门micromamba支持所有mamba或conda命令的子集,并从头开始实现命令行界面。您可以使用以下命令查看所有已实现的命令:micromamba--help$micromamba--helpSubcommands:shellGenerateshellinitscriptscreateCreatenewenvironmentinstallInstallpackagesinactiveenvironmentupdateUpdatepackagesinactiveenvironmentrepoqueryFindandanalyzepackagesinactiveenvironmentorchannelsremoveRemovepackagesfromactiveenvironmentlistListpackagesinactiveenvironmentpackageExtractapackageorbundlefilesintoanarchivecleanCleanpackagecacheconfigConfigurationofmicromambainfoInformationaboutmicromambaconstructorCommandstosupportusingmicromambainconstructorenvListenvironmentsactivateActivateanenvironmentrunRunanexecutableinanenvironmentpsShow,inspectorkillrunningprocessesauthLoginorlogoutofagivenhostsearchFindpackagesinactiveenvironmentorchannels123456789101112131415161718192021要激活环境,只需调用micromambaactivate/path/to/env,或者,当它是根前缀中的命名环境时,您也可以使用micromambaactivatemyenv。micromamba期望找到使用$MAMBA_ROOT_PREFIX设置的根前缀。您还可以使用CLI选项-r,--root-prefix来提供它。命名环境,然后在$MAMBA_ROOT_PREFIX/envs/.了解更多详细信息,请阅读配置。激活环境后,您可以运行install以将新包添加到环境中。$micromambainstallxtensor-cconda-forge1使用create,您还可以创建环境:$micromambacreate-nxtensor_envxtensorxsimd-cconda-forge_________________________//______////__`__\/__`/__`__\/__\/__`///_////////_////////_///_///.___/_//_//_/\__,_/_//_//_/_.___/\__,_//_/conda-forge/noarch[====================](00m:01s)Doneconda-forge/linux-64[====================](00m:04s)DoneTransactionPrefix:/home/wolfv/miniconda3/envs/xtensor_envUpdatingspecs:-xtensor-xsimdPackageVersionBuildChannelSize────────────────────────────────────────────────────────────────────────Install:────────────────────────────────────────────────────────────────────────_libgcc_mutex0.1conda_forgeconda-forge/linux-64Cached_openmp_mutex4.51_gnuconda-forge/linux-64Cachedlibgcc-ng9.3.0h5dbcf3e_17conda-forge/linux-64Cachedlibgomp9.3.0h5dbcf3e_17conda-forge/linux-64Cachedlibstdcxx-ng9.3.0h2ae2ef3_17conda-forge/linux-64Cachedxsimd7.4.9hc9558a2_0conda-forge/linux-64102KBxtensor0.21.9h0efe328_0conda-forge/linux-64183KBxtl0.6.21h0efe328_0conda-forge/linux-64CachedSummary:Install:8packagesTotaldownload:285KB────────────────────────────────────────────────────────────────────────Confirmchanges:[Y/n]...1234567891011121314151617181920212223242526272829303132333435363738394041424344安装完成后,可以通过以下方式激活环境:$micromambaactivatextensor_env1Specification文件create语法还允许您使用规范或环境文件(也称为规范文件)来轻松地重新创建环境。支持的语法是:简单的文本规格文件CondaYAML规范文件显式规格文件conda-lockYAML规范文件简单文本规范文件该txt文件每行包含一个spec。例如,可能看起来像:xtensornumpy1.19xsimd>=7.4123要使用此文件,请传递:$micromambacreate-nfrom_file-fspec_file.txt-cconda-forge1注:您可以通过重复参数来传递多个文本规范文件-f,--file。CondaYAML规范文件更强大的是YAML如下文件,因为它们已经包含所需的环境名称和要使用的通道:name:testenvchannels:-conda-forgedependencies:-python>=3.6,=5.1-ipywidgets1234567它们的使用方式与文本文件相同:$micromambacreate-fenv.yml1注:CLI选项将优先于规范文件中指定的目标前缀或通道。注:您可以通过重复-f,--file参数,来传递多个YAML规范文件。显式规范文件使用conda您可以生成显式环境锁定文件。为此,创建一个环境,激活它,然后执行:$condalist--explicit--md51这些环境文件如下所示,并且精确地“固定”所需的包+版本+构建字符串。每个包还具有可重复性的校验和:#Thisfilemaybeusedtocreateanenvironmentusing:#$condacreate--name--file#platform:linux-64@EXPLICIThttps://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-9.3.0-h2ae2ef3_17.tar.bz2#342f3c931d0a3a209ab09a522469d20chttps://conda.anaconda.org/conda-forge/linux-64/libgomp-9.3.0-h5dbcf3e_17.tar.bz2#8fd587013b9da8b52050268d50c12305https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-9.3.0-h5dbcf3e_17.tar.bz2#fc9f5adabc4d55cd4b491332adc413e0https://conda.anaconda.org/conda-forge/linux-64/xtl-0.6.21-h0efe328_0.tar.bz2#9eee90b98fd394db7a049792e67e1659https://conda.anaconda.org/conda-forge/linux-64/xtensor-0.21.8-hc9558a2_0.tar.bz2#1030174db5c183f3afb4181a0a02873d1234567891011要使用安装这样的文件micromamba,只需再次传递该-f标志:$micromambacreate-nxtensor-fexplicit_env.txt1注:显式规范文件是单平台的。conda-lockYAML规范文件使用conda-lock,您可以生成锁定文件,该文件与显式规范文件一样,精确固定并包含每个包的校验和以实现可重复性。与显式规范文件不同,这些“统一”锁定文件是多平台的。这些文件默认命名为conda-lock.yml,如下所示:#Thislockfilewasgeneratedbyconda-lock(https://github.com/conda/conda-lock).DONOTEDIT!##A"lockfile"containsaconcretelistofpackageversions(withchecksums)tobeinstalled.Unlike#e.g.`condaenvcreate`,theresultingenvironmentwillnotchangeasnewpackageversionsbecome#available,unlessyouexplicitlyupdatethelockfile.##Installthisenvironmentas"YOURENV"with:#conda-lockinstall-nYOURENV--fileconda-lock.yml#Toupdateasinglepackagetothelatestversioncompatiblewiththeversionconstraintsinthesource:#conda-locklock--lockfileconda-lock.yml--updatePACKAGE#Tore-solvetheentireenvironment,e.g.afterchangingaversionconstraintinthesourcefile:#conda-lock-fenvironment.yml--lockfileconda-lock.ymlversion:1metadata:content_hashsx-64:c2ccd3a86813af18ea19782a2f92b5a82e01c89f64a020ad6dea262aae638e48linux-64:06e0621a9712fb0dc0b16270ddb3e0be16982b203fc71ffa07408bf4bb7c22ecwin-64:efee77261626b3877b9d7cf7bf5bef09fd8e5ddfc79349a5f598ea6c8891ee84channels:-url:conda-forgeused_env_vars:[]platforms:-linux-64-osx-64-win-64sources:-environment.ymlpackage:-name:_libgcc_mutexversion:'0.1'manager:condaplatform:linux-64dependencies:{}url:https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2hash:md5:d7c89558ba9fa0495403155b64376d81sha256:fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726category:mainoptional:false-name:ca-certificatesversion:2023.5.7manager:condaplatform:linux-64dependencies:{}url:https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.condahash:md5:f5c65075fc34438d5b456c7f3f5ab695sha256:0cf1bb3d0bfc5519b60af2c360fa4888fb838e1476b1e0f65b9dbc48b45c7345category:mainoptional:false1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950要使用安装这样的文件micromamba,只需再次传递该-f标志:$micromambacreate-nmy-environment-fconda-lock.yml12024-04-23(二)雨夜蛙鸣
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-13 06:27 , Processed in 0.486148 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表