配置 MicroMamaba 包管理器

前言

为了配置某些项目的运行环境,有时不得不使用 Conda 进行环境配置,比如 AnaConda

但是 AnaConda 重,太重了,配置环境还很慢,还有另一个选择就是 Miniconda,但也就比 AnaConda 轻量的一些。

不过现在有了更好的选择,那就是 MicroMamba,本体非常小,不依赖 Python 环境运行,并且安装环境的速度还很快呢。下面就讲讲这个工具怎么安装吧。

下面将演示在不同的系统和终端安装 MicroMamba,计划安装在 Windows 系统上的D:/micromamba路径,在 Linux 上的~/micromamba路径。

嗯…可能下载 MicroMamba 的时候会出现下载失败的问题,那就配置一下终端代理就好了,参考一下《在终端中快速设置代理 》这篇文章吧。

创建 MicroMamba 的文件夹

MicroMamba 虽然只有一个文件,但总有一个地方来放它,所以就建个路径来放它吧。

Windows

  • PowerShell
1
New-Item -ItemType Directory -Force -Path "D:/micromamba"
  • Msys2 / Git Bash
1
mkdir -p "D:/micromamba"

Linux

1
mkdir -p "~/micromamba"

下载 MicroMamba

有了放置 MicroMamba 的路径,接下来就需要下载 MicroMamba 了。

Windows

  • PowerShell
1
Invoke-WebRequest "https://github.com/mamba-org/micromamba-releases/releases/download/2.1.1-0/micromamba-win-64" -OutFile "D:/micromamba/micromamba.exe"
  • Msys2 / Git Bash
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

  • PowerShell
1
& "D:/micromamba/micromamba.exe" shell init --shell powershell --root-prefix "D:/micromamba"
  • Git Bash
1
"D:/micromamba/micromamba" shell init --shell bash --root-prefix "D:/micromamba"
  • Msys2
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
# >>> mamba initialize >>>
# !! Contents within this block are managed by 'mamba init' !!
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
: # pass
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

# remove leftover backup file on Windows
if [ -f "${MAMBA_EXE}.bkup" ]; then
rm -f "${MAMBA_EXE}.bkup"
fi
;;
*)
__mamba_exe "${@}"
;;
esac
}

# We need to define a function with the same name as the executable to be called by the user.
# There is no way to register it dynamically without relying on hacks or eval.
__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}"

# We're not allowing PS1 to be unbound. It must at least be set.
# However, we're not exporting it, which can cause problems when starting a second shell
# via a first shell (i.e. starting zsh from bash).
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
# <<< mamba initialize <<<

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文件,把上面的配置文件复制进去并保存吧。

重启终端

重新打开终端,运行下面的命令检查一下。

1
micromamba --version

如果能够显示版本号就说明安装成功了呢。

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就行了呢,非常简单。


配置 MicroMamaba 包管理器
http://licyk.github.io/2025/05/31/configure-micromamba/
作者
licyk
发布于
2025年5月31日
许可协议