2、Snakemake安装与环境配置

安装这块,我见过不少新手卡在最开始。说白了,装错了环境后面的工作全白费。这章我带你走一遍稳当的安装流程,把坑提前填平。

系统要求

Snakemake 本质是用 Python 写的,所以对系统没有特别变态的要求。但我在项目中踩过一些坑,先给你划个底线。

项目最低要求推荐配置
操作系统Linux / macOS / Windows(WSL2)Linux (Ubuntu 20.04+) 或 macOS
Python3.83.10 – 3.11
磁盘10 GB 空闲50 GB+(放中间文件)
内存4 GB16 GB+(质控任务并行)
注意: Windows 原生不支持 Snakemake 的符号链接和管道。我建议你用 WSL2(Windows Subsystem for Linux),或者直接上个 Linux 虚拟机。千万别硬装原版 Windows 上,否则后面各种权限错误能让你怀疑人生。

用 Conda / Mamba 安装——这才是主流

我个人习惯用 Mamba 来装 Snakemake,比 Conda 快好几倍,而且解决依赖冲突的能力更强。你想想看,一个生信项目下来,Python 包、R 包、系统库混在一起,Conda 有时候能卡半小时。Mamba 两分钟搞定。

第一步:先装 Miniconda。去官网下载对应系统的版本,或者像我一样用命令行一把梭:

# Linux / macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 一路 yes,默认安装在 ~/miniconda3

装好以后,记得重启终端,或者执行 source ~/.bashrc。然后装 Mamba:

conda install mamba -n base -c conda-forge
经验: 我遇到过 Mamba 装完后 conda 命令变慢的情况。原因是你 base 环境里装太多包了。保持 base 干净,后面所有 project 都用独立环境。

第二步:用 Mamba 创建新环境并安装 Snakemake。千万不要装在 base 环境里。

# 创建一个干净的环境,名字叫 snakemake_env
mamba create -n snakemake_env -c conda-forge -c bioconda snakemake

# 激活环境
conda activate snakemake_env

这里指定了 conda-forge 和 bioconda 两个 channel,顺序很重要!Bioconda 里很多包依赖 conda-forge,所以 conda-forge 要放在前面。我曾经因为写反了顺序,结果装了一个老版本 Snakemake,浪费了两小时调试。

验证安装——别假安装

装完以后,第一步先查版本:

snakemake --version

如果显示类似 7.32.4(或者更新的版本号),说明安装成功。我遇到过一种坑:终端里还能找到旧版本的 snakemake 命令。所以建议你用 which snakemake 确认一下路径是否指向你刚才创建的 conda 环境。

which snakemake
# 正确结果应该是 ~/miniconda3/envs/snakemake_env/bin/snakemake

接着跑一个最简单的测试:

snakemake --dry-run --snakefile /dev/null
# 期望输出:Nothing to be done.

快速验证清单

  • 版本号 ≥ 7.0
  • which 路径指向 conda 环境
  • snakemake --help 能正常显示帮助信息
  • 无 ImportError(例如缺少 networkx 或 reretry)

配置 Python 环境——避开版本陷阱

Snakemake 本身依赖一堆 Python 包,但你不需要手动一个个装。Conda 会自动解决。但如果你像我一样,在同一个机器上同时跑多个项目,就得注意 Python 版本冲突。

我的做法是:每个项目单独一个环境,统一指定 Python 版本。比如:

mamba create -n project_fastq python=3.11 snakemake pandas matplotlib

这里我用的是 Python 3.11,因为目前(2025年)Snakemake 对 3.11 兼容性最好。3.12 也能用,但部分 bioconductor 包还没适配,容易出依赖错误。你如果拿不准,就选 3.10 或 3.11。

配置完成后,用以下命令确认环境干净:

conda list -n snakemake_env | grep "snakemake"
# 应当看到 snakemake 及其依赖,没有冲突
避坑指南: 我曾经在旧服务器上同时装了系统级的 Python 2.7 和 conda 的 Python 3.11,结果 pip 包冲突,导致 Snakemake 的 report 功能无法生成 HTML 报告。解决方案:永远不要用系统 Python 来运行 Snakemake。每次新开终端第一件事就是 conda activate snakemake_env。

整体流程梳理

这章的安装流程可以总结为一张图,你按照这个顺序走,基本不会出错。

Snakemake 安装流程图 检查系统要求 安装 Miniconda 安装 Mamba 创建环境 + 安装Snakemake 激活环境 验证安装 配置Python环境 🌟 关键提醒 • 保持 base 环境干净,所有项目用独立 conda 环境 • Conda-Forge 放在 channel 第一位,Bioconda 第二位

补充:环境管理小套路

安装完成后,我还会顺手做两件事:

  1. 把 conda 默认环境路径改到自定义目录,防止根目录磁盘写满。方法:conda config --add envs_dirs /data/conda_envs
  2. 把安装好的环境导出成 yaml 文件,方便复现:conda env export -n snakemake_env > environment.yaml

做完这些,你的 Snakemake 就算安装到位了。后面就可以放心写 Snakefile 跑质控流水线了。记住:环境干净是成功的一半,另一半是别偷懒,每个项目单独建环境。