Snakemake 安装与环境配置
讲到环境配置,我先说句实在话:Snakemake 本身依赖链很轻,但坑都在 Python 环境管理上。我入行那会儿傻乎乎在系统 Python 里直接 pip install,结果半年后项目要升级,依赖一塌糊涂。所以无论你选 conda 还是 pip,请先把环境隔离做好。
安装 Snakemake 主流就两条路:conda 和 pip。我个人习惯用 conda,尤其项目里还有 R、C++ 库的时候。但如果你团队全是 Python 栈,pip + venv 也完全够用。下面我把两种方式都捋清楚。
1. 方式一:conda 安装(推荐)
conda 的好处是能管理非 Python 依赖,比如 libcurl、gcc、R 这些。Snakemake 官方也推荐用 conda 管理环境。
- 安装 Miniconda(或 Anaconda,但 Miniconda 更轻量)
- 创建专用环境:不污染 base 环境
- 安装 Snakemake:从 conda-forge 通道装
- 验证安装
具体命令如下:
# 下载并安装 Miniconda(Linux 为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 创建并进入 snakemake 环境
conda create -n snakemake_env python=3.11 -y
conda activate snakemake_env
# 从 conda-forge 安装 Snakemake
conda install -c conda-forge snakemake -y
# 验证
snakemake --version
我的小习惯:环境名我常用
smk_项目名,比如 smk_rnaseq。这样项目多了也好认。另外记得把 conda activate 加到 .bashrc 里? 别,建议每次手动激活,避免不同项目相互打架。
2. 方式二:pip 安装
如果团队统一用 pip,也没问题。Snakemake 在 PyPI 上维护得很及时。但注意:pip 只装 Python 包,底层工具比如 graphviz(画 DAG 用)、curl 这些需要自己额外装。
步骤:
- 创建 Python 虚拟环境(venv / virtualenv)
- 激活环境
- pip 安装 snakemake
- 验证
# 创建虚拟环境(Python 3.7+ 自带 venv)
python3 -m venv snakemake_venv
# 激活
source snakemake_venv/bin/activate
# 升级 pip(可选但推荐)
pip install --upgrade pip
# 安装 snakemake
pip install snakemake
# 验证
snakemake --version
曾经踩过的坑:有次生产服务器装 snakemake,
pip install 时卡在编译 psutil,因为系统缺少 python3-dev。所以 pip 方式记得提前装好 build-essential 和 python3-dev(Linux)。macOS 基本没这问题。
3. 虚拟环境核心对比
你可能想问:到底用 conda 还是 pip?我整理了一个表,你一看就明白。
| 对比维度 | conda create | python -m venv |
|---|---|---|
| 依赖管理范围 | Python + 非 Python(R、C 库等) | 仅 Python |
| 环境隔离速度 | 稍慢(需解析 meta 数据) | 极快(纯 Python 软链接) |
| 二进制兼容性 | 强(conda-forge 预编译) | 弱(源码编译可能失败) |
| 网络需求 | 需 conda-forge 通道 | 需 PyPI 服务器 |
| 推荐场景 | 多语言项目、生产环境 | 纯 Python 快速原型 |
说白了,实验阶段我用 pip 图快,正式跑 pipeline 用 conda 图稳。
4. 安装流程总览
为了让你对整体有个印象,我画了张流程图。这是本章唯一一张图,认真看。
5. 验证安装与常见问题
安装完别急着跑,先做两件事:
- 查看版本:
snakemake --version,正常输出类似8.5.2 - 测试 DAG 生成:写一个极简 Snakefile 输入空规则,看能不能打印 DAG
# 极简测试 Snakefile
rule all:
input:
"test.txt"
rule make_test:
output:
"test.txt"
shell:
"echo 'hello snakemake' > test.txt"
# 执行看 DAG(不实际运行)
snakemake --dag --dry-run | dot -Tsvg > dag.svg
关键验证点:如果
--dag 报错找不到 dot,说明系统没装 graphviz。conda 用户直接 conda install -c conda-forge graphviz,pip 用户 apt install graphviz 或 brew install graphviz 搞定。
6. 避坑指南(亲身经历)
我直接说几个我踩过的雷:
- Python 版本不要太高:我试过 Python 3.13 装 Snakemake,某些依赖还没兼容。建议用 3.10 或 3.11。
- conda 环境名不能有空格:这个低级错误我犯过,命令行解析会炸。
- Windows 用户注意:Snakemake 对 Windows 支持有限,尤其子进程和路径。我建议 Windows 用户直接上 WSL2 + conda。
- macOS M1/M2:有次在 M1 上用 pip 安装,
pygraphviz二进制不匹配,换成 conda 瞬间解决。 - 不要用 sudo pip install:曾经手快加了个 sudo,系统 Python 被污染,后来重装了系统。不用 sudo 就是对自己好。
我自己的标准配置:Miniconda(不放 base)+ 每个项目一个独立 conda 环境 + 环境名用
smk_项目名。这样做了一年半,再没出过依赖冲突。
嗯,到这里安装配置这块就算是讲完了。你跟着走一遍,应该二十分钟就能搭好环境。配好了环境,下一篇我们就要正式开始写 Snakefile 了。不过别急,先把自己手头的环境跑通,遇到问题翻翻上面的避坑指南,基本都能解决。