跳转至

Mamba

MambaConda 的一个更快、更轻量级的替代品,专注于提供更快的包管理体验。Conda 是一个流行的包管理器和环境管理器,特别适用于科学计算和数据科学。Mamba 使用与 Conda 相同的包格式和仓库,但通过 C++ 实现的核心算法,大大提高了包解析和依赖管理的速度,特别是在处理复杂环境和大规模依赖时性能优势明显。

一. 安装 Mamba

可以通过以下几种方式安装 Mamba。

Conda 中安装 Mamba

conda install mamba -n base -c conda-forge

-n base:指定将 Mamba 安装到 Conda 的基础环境 base 中。

-c conda-forge:使用 Conda-Forge 频道安装 Mamba

Micromamba

Micromamba 是 Mamba 的一个轻量级版本,它没有依赖 Conda,安装非常简单。

mkdir ~/bin
curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba

# 配置环境变量,配置完成之后micromamba安装的软件和创建的环境默认路径为~/micromamba
~/bin/micromamba shell init -s bash -p ~/micromamba

# 为方便使用,可以使用alias将micromamba改为mamba
echo "alias mamba=micromamba" >> ~/.bashrc
source ~/.bashrc

Miniforge3

与 Miniconda 类似,Miniforge3 是一个精简的 Conda 发行版,默认使用社区维护的 conda-forge 包仓库。与 Mamba、Micromamba 完全兼容,用户可以选择使用 Mamba 来代替 Conda 进行更快的包管理和环境创建。

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh

# 运行安装命令,默认安装目录为 ~/miniforge3/
bash Miniforge3-Linux-x86_64.sh

# 初始化
~/miniforge3/bin/conda init

# 如果不想在账号登录时就启用 base 环境,可以如下设置。集群上建议如此设置
~/miniforge3/bin/conda config --set auto_activate_base false

配置源

与conda类似,首次使用时需要配置国内的源以加快软件安装速度。将以下内容保存到 ~/.mambarc 即可。

channels:
  - conda-forge
  - bioconda
  - defaults
show_channel_urls: true

default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

二. 基本使用

# 激活mamba环境
$ mamba activate
(base) $

# 安装软件
(base) $ mamba install  -c bioconda  bwa
(base) $ which bwa
~/micromamba/bin/bwa

# 创建环境,可以用-p指定创建的环境的路径,默认路径为上面配置的路径~/micromamba/
$ mamba create -n RNASeq

# 激活创建的环境
$ mamba activate RNASeq
(RNASeq) $

# 在RNASeq环境中安装软件
(RNASeq) $ mamba install  -c bioconda STAR
(base) $ which STAR
~/micromamba/envs/RNASeq/bin/STAR

# 退出RNASeq环境
(RNASeq) $ mamba deactivate
(base) $

# 创建python版本为3.10的环境,并安装pytorch
$ mamba create -n torch python=3.10
$ mamba activate torch
(torch) micromamba install pytorch 

# 删除环境
$ mamba remove -n pytorch --all # 会有目录残留
$ mamba env remove -p pytorch # 无目录残留

# 退出 mamba 环境
(base) $ mamba deactivate

Note

conda run 是 Conda 提供的一种机制,用于在指定环境中执行命令,而无需激活该环境。

conda run -n base python --version  # Python 3.12.7
conda  run -n calling  python --version # Python 3.13.0

三. Conda env

以下是关于 Conda 环境的一些常用操作和内容的详细介绍:

环境基础操作

# 查看 Conda 环境
conda env list

# 常见环境
conda create --name <env_name> python=3.9

# 激活环境
conda activate <env_name>
# 退出当前环境
conda deactivate

# 更新环境
conda update --name <env_name> <package_name>   # 更新现有环境中的包

# 删除指定环境
conda remove --name <env_name> --all
# 删除指定路径的环境
conda remove --prefix /path/to/env --all

Tip

使用环境配置文件创建 Conda 环境,创建一个 .yaml 文件(例如 env.yaml),内容如下

name: pop
channels:
  - bioconda
  - conda-forge
  - defaults
dependencies:
  - plink =1.90
  - iqtree =2.3.6

从配置文件创建环境

conda env create --file env.yaml

更新环境: 如果需要修改环境(例如添加新包),编辑 env.yaml,然后运行:

conda env update --file env.yaml --prune

环境目录自定义

默认情况下,Conda 环境会存储在 ~/miniconda3/envs/~/anaconda3/envs/ 目录下。可以自定义环境的存储位置:

# 自定义存储路径
conda create --prefix /custom/path/to/env python=3.9 numpy

激活环境时需使用路径:

conda activate /custom/path/to/env

指定全局 Conda 环境存储目录通过 conda config 配置:

conda config --set envs_dirs /path/to/envs_dir

导出与共享环境

将环境导出为 .yaml 文件

conda env export --name <env_name> --file environment.yaml

四. Conda 通道

Conda 通道是包仓库的集合,包含了一系列软件包及其依赖项。通道可以是官方的(如 defaults)、社区维护的(如 conda-forgebioconda)、或用户自定义的。

  1. 提供软件包源:下载和安装所需的软件包。

  2. 控制优先级:为不同来源的包设置优先级,以确保稳定性和兼容性。

  3. 加速安装:通过镜像站(如清华源)提高下载速度。

# 1. 查看现有通道配置
conda config --show channels

# 2. 添加通道
conda config --add channels conda-forge
conda config --add channels bioconda

# 3. 删除通道
conda config --remove channels conda-forge

# 4. 重置默认通道
conda config --remove-key channels

通道优先级

Conda 安装和解决包依赖时,会根据通道的优先级来决定从哪个通道下载软件包。如果通道优先级没有正确设置,可能会导致不兼容的软件包被安装,进而引发问题。

# 1. 设置为严格优先级
conda config --set channel_priority strict

# 2. 灵活优先级
conda config --set channel_priority flexible