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 管理环境。

  1. 安装 Miniconda(或 Anaconda,但 Miniconda 更轻量)
  2. 创建专用环境:不污染 base 环境
  3. 安装 Snakemake:从 conda-forge 通道装
  4. 验证安装

具体命令如下:

# 下载并安装 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 这些需要自己额外装。

步骤:

  1. 创建 Python 虚拟环境(venv / virtualenv)
  2. 激活环境
  3. pip 安装 snakemake
  4. 验证
# 创建虚拟环境(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. 安装流程总览

为了让你对整体有个印象,我画了张流程图。这是本章唯一一张图,认真看。

Snakemake 安装环境配置流程图 选择安装方式 conda create -n my_env python -m venv my_env conda activate / source bin/activate conda install / pip install snakemake snakemake --version 💡 建议:每个项目单独建环境,避免版本冲突

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 了。不过别急,先把自己手头的环境跑通,遇到问题翻翻上面的避坑指南,基本都能解决。