前言 为了配置某些项目的运行环境,有时不得不使用 Conda 进行环境配置,比如 AnaConda 。
但是 AnaConda 重,太重了,配置环境还很慢,还有另一个选择就是 Miniconda ,但也就比 AnaConda 轻量的一些。
不过现在有了更好的选择,那就是 MicroMamba ,本体非常小,不依赖 Python 环境运行,并且安装环境的速度还很快呢。下面就讲讲这个工具怎么安装吧。
下面将演示在不同的系统和终端安装 MicroMamba,计划安装在 Windows 系统上的D:/micromamba
路径,在 Linux 上的~/micromamba
路径。
嗯…可能下载 MicroMamba 的时候会出现下载失败的问题,那就配置一下终端代理就好了,参考一下《在终端中快速设置代理 》这篇文章吧。
创建 MicroMamba 的文件夹 MicroMamba 虽然只有一个文件,但总有一个地方来放它,所以就建个路径来放它吧。
Windows
1 New-Item -ItemType Directory -Force -Path "D:/micromamba"
1 mkdir -p "D:/micromamba"
Linux
下载 MicroMamba 有了放置 MicroMamba 的路径,接下来就需要下载 MicroMamba 了。
Windows
1 Invoke-WebRequest "https://github.com/mamba-org/micromamba-releases/releases/download/2.1.1-0/micromamba-win-64" -OutFile "D:/micromamba/micromamba.exe"
1 curl -L "https://github.com/mamba-org/micromamba-releases/releases/download/2.1.1-0/micromamba-win-64" -o "D:/micromamba/micromamba.exe"
Linux 1 curl -L "https://github.com/mamba-org/micromamba-releases/releases/download/2.1.1-0/micromamba-linux-64" -o "~/micromamba/micromamba"
初始化 MicroMamba 目录 MicroMamba 下载下来后,还不可以直接使用呢,需要初始化一下它的路径。
Windows
1 & "D:/micromamba/micromamba.exe" shell init --shell powershell --root-prefix "D:/micromamba"
1 "D:/micromamba/micromamba" shell init --shell bash --root-prefix "D:/micromamba"
1 "D:/micromamba/micromamba" shell init --root-prefix "D:/micromamba"
Msys2 相比 Git Bash 来说比较特殊欸,需要进行额外的配置修改,因为 Msys2 的HOME
环境变量设置的路径为 Msys2 自己的家路径,而不是像 Git Bash 一样设置为 Windows 的用户路径,这就导致 MicroMamba 在 Windows 的用户路径生成的 Shell 配置文件无法被 Msys2 识别到。
如果在 Msys2 中使用 Zsh 终端,可能会出现zsh: parse error near ^M'
,这是因为 Zsh 并不能正确的处理 CRLF 换行符(唉,曾经被这问题困扰了好久呢),导致无法正常初始化 MicroMamba 的环境,需要进行换行符转换和命令重写。
那根据这两个问题,解决方法就是这样吧:
找到 Shell 的配置文件路径(下面这条命令适用于 Bash / Zsh,如果是其他终端就自行查找配置文件在哪吧)。
1 echo "$(cygpath -w "${HOME} /.${SHELL#/usr/bin/} rc" ) "
运行命令后会显示配置文件的所在路径,打开这个配置文件,将下面的内容复制进这个配置文件并保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 export MAMBA_EXE="$HOME /.local/bin/micromamba.exe" ;export MAMBA_ROOT_PREFIX="/d/Softwares/MicroMamba" ;case "${SHELL#/usr/bin/} " in zsh) eval "$("${MAMBA_EXE} " shell hook --shell bash --root-prefix "${MAMBA_ROOT_PREFIX} " | dos2unix) " __mamba_exe () { "${MAMBA_EXE} " "${@} " } __mamba_hashr () { if [ -n "${ZSH_VERSION:+x} " ]; then rehash elif [ -n "${POSH_VERSION:+x} " ]; then : else hash -r fi } __mamba_xctivate () { local ask_mamba ask_mamba="$(PS1="${PS1:-} " __mamba_exe shell "${@} " --shell bash | dos2unix) " || return eval "${ask_mamba} " __mamba_hashr } __mamba_wrap () { local cmd="${1-__missing__} " case "${cmd} " in activate|reactivate|deactivate) __mamba_xctivate "${@} " ;; install|update|upgrade|remove|uninstall) __mamba_exe "${@} " || return __mamba_xctivate reactivate ;; self-update) __mamba_exe "${@} " || return if [ -f "${MAMBA_EXE} .bkup" ]; then rm -f "${MAMBA_EXE} .bkup" fi ;; *) __mamba_exe "${@} " ;; esac } __exe_name="$(basename "${MAMBA_EXE} " ) " __exe_name="${__exe_name%.*} " if [[ "${__exe_name} " == "micromamba" ]]; then micromamba () { __mamba_wrap "${@} " ; } elif [[ "${__exe_name} " == "mamba" ]]; then mamba () { __mamba_wrap "${@} " ; } else echo "Error unknow MAMBA_EXE: \"${MAMBA_EXE} \", filename must be mamba o2" fi if [ -z "${CONDA_SHLVL+x} " ]; then export CONDA_SHLVL=0 export PATH="${MAMBA_ROOT_PREFIX} /condabin:${PATH} " if [ -z "${PS1+x} " ]; then PS1= fi fi if [ -n "${ZSH_VERSION:+x} " ]; then if ! command -v compinit > /dev/null; then autoload -U +X compinit && if [[ "${ZSH_DISABLE_COMPFIX-} " = true ]]; then compinit -u else compinit fi fi autoload -U +X bashcompinit && bashcompinit _umamba_zsh_completions () { COMPREPLY=($(__mamba_exe completer "${(@s: :)${(@s: :)COMP_LINE} :1} " )) } complete -o default -F _umamba_zsh_completions micromamba fi if [ -n "${BASH_VERSION:+x} " ]; then _umamba_bash_completions () { COMPREPLY=($(__mamba_exe completer "${COMP_WORDS[@]:1} " )) } complete -o default -F _umamba_bash_completions micromamba fi ;; *) eval "$("${MAMBA_EXE} " shell hook --shell bash --root-prefix "${MAMBA_ROOT_PREFIX} " ) " ;;esac
Linux 1 "~/micromamba/micromamba" shell init --root-prefix "~/micromamba/micromamba"
配置 MicroMamba 的镜像源 下面是一个比较的通用的配置,在 Windows 上和 Linux 上基本覆盖常用的镜像源,如果需要其他的源就自己在这个基础上修改吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 channels: - defaults - conda-forge - pytorch default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud channel_priority: strict show_channel_urls: true
Windows 在C:/User/<你的用户名>
这个位置创建.condarc
文件,把上面的配置文件复制进去并保存吧。
Linux 运行一下realpath ~
这个命令,查看家路径在哪,然后在家路径中创建.condarc
文件,把上面的配置文件复制进去并保存吧。
重启终端 重新打开终端,运行下面的命令检查一下。
如果能够显示版本号就说明安装成功了呢。
MicroMamba 的配置文件路径 MicroMamba 的文件主要就在这几个地方吧。
<用户路径>/.condarc
<用户路径>/.conda
<MicroMamba 安装的路径>
Shell 的配置文件中mamba initialize
的部分
知道这几个地方后,如果需要修改配置或者卸载 MicroMamba 就很简单了。
使用 MicroMamba MicroMamba 的命令大部分是兼容 conda 的命令的,比如conda create -n py311 python=3.11
这个 Conda 命令在 MicroMamba 上就是micromamba create -n py311 python=3.11
,也就是简单的把conda
换成micromamba
就行了呢,非常简单。