2、Snakemake安装与环境配置
安装这块,我见过不少新手卡在最开始。说白了,装错了环境后面的工作全白费。这章我带你走一遍稳当的安装流程,把坑提前填平。
系统要求
Snakemake 本质是用 Python 写的,所以对系统没有特别变态的要求。但我在项目中踩过一些坑,先给你划个底线。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Linux / macOS / Windows(WSL2) | Linux (Ubuntu 20.04+) 或 macOS |
| Python | 3.8 | 3.10 – 3.11 |
| 磁盘 | 10 GB 空闲 | 50 GB+(放中间文件) |
| 内存 | 4 GB | 16 GB+(质控任务并行) |
用 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 创建新环境并安装 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 及其依赖,没有冲突
conda activate snakemake_env。
整体流程梳理
这章的安装流程可以总结为一张图,你按照这个顺序走,基本不会出错。
补充:环境管理小套路
安装完成后,我还会顺手做两件事:
- 把 conda 默认环境路径改到自定义目录,防止根目录磁盘写满。方法:
conda config --add envs_dirs /data/conda_envs - 把安装好的环境导出成 yaml 文件,方便复现:
conda env export -n snakemake_env > environment.yaml
做完这些,你的 Snakemake 就算安装到位了。后面就可以放心写 Snakefile 跑质控流水线了。记住:环境干净是成功的一半,另一半是别偷懒,每个项目单独建环境。