安装 Snakemake:环境要求、conda/pip 安装、验证安装

说实话,很多新手一上来就急着写 Snakefile,结果装都装不对,折腾半天。

我个人习惯是,先花 10 分钟把环境理清楚。这个时间省不掉。

这一章,我带你走一遍完整的安装流程。从系统检查,到两种安装方式的选择,再到最后的验证。

环境要求:先看看你的系统准备好了没

安装前,先确认你的机器满足条件。不然后面报错,你都不知道从哪查起。

我记得刚开始用 Snakemake 时,用了个 Python 2.7 的环境,死活装不上。后来才发现,这工具早就不支持 2 了。

下面这张表,就是最基本的门槛:

项目 要求 备注
Python 版本 ≥ 3.8 强烈推荐 3.9 或 3.10
操作系统 Linux / macOS / Windows (WSL2) Windows 原生支持有限,用 WSL2 最省心
磁盘空间 至少 2GB 空闲 主要是 conda 环境和缓存占用
网络连接 需要 安装包和依赖需要从网络下载

这里有个容易忽略的点——磁盘。别小看它。conda 环境装多了,轻易就吃掉十几 GB。我有个项目,光 bioconda 的依赖就占了 8GB。

我的建议:不管用什么方式装,先给 Snakemake 建一个独立环境。别往 base 环境里怼。后面你会感谢我的。

两种主流安装方式:conda vs pip

Snakemake 的安装方式,说白了就两条路:conda 和 pip。

很多新手会纠结选哪个。我直接给你结论:

安装方式 适用场景 优点 缺点
conda 新手、需要管理多个工具链、生物信息项目 自动处理非 Python 依赖(如 samtools、bwa) 环境解析慢,包体积大
pip 纯 Python 项目、已有虚拟环境、熟悉 venv 安装快,轻量 需要自行安装系统级工具(如 graphviz、R)

我个人习惯这样:

  • 做生信、复杂流程 —— 用 conda。它能帮你把 samtools、bedtools 这些外部工具一起装了,省事。
  • 纯 Python 项目、测试、CI/CD —— 用 pip。轻装上阵,跑得快。

你想想看,如果你的流程里掺了外部工具,用 pip 装完 Snakemake,还得手动装那些工具。多麻烦。conda 一步到位。我建议新手直接用 conda。

方法一:使用 conda 安装

假设你已经装好了 miniconda 或 anaconda。没装?赶紧去装一个。这是正经建议。

安装步骤,我拆成三条命令:

  1. 创建一个新环境,指定 Python 版本。
  2. 激活环境。
  3. 安装 Snakemake 核心包。

具体命令:

conda create -n snakemake_env python=3.10 -y
conda activate snakemake_env
conda install -c conda-forge -c bioconda snakemake -y

这里我用的是两个频道:conda-forge 和 bioconda。顺序不能乱。

  • conda-forge:通用频道,优先级高。
  • bioconda:生物信息频道,Snakemake 的很多依赖都在这里。
注意:安装过程可能会比较慢。尤其是第一次解析环境依赖的时候。conda 的解算器确实...嗯,有点慢。耐心等。如果实在受不了,可以试试 conda-libmamba-solver,能快很多。

安装完成后,确认一下:

conda activate snakemake_env
which snakemake

输出应该是一个路径,指向你的 conda 环境里的可执行文件。

我在项目中遇到过一个问题:明明装了,但系统提示"command not found"。后来发现是环境没激活。记住,每次用 Snakemake 之前,先 conda activate snakemake_env。

方法二:使用 pip 安装

如果你已经是 Python 老手,或者项目环境已经用 venv/poetry 管理了,那用 pip 会更顺手。

执行以下命令:

python3 -m venv snakemake_venv
source snakemake_venv/bin/activate
pip install snakemake

或者,如果你不想建虚拟环境(虽然我强烈不建议你这么做):

pip install --user snakemake

pip 的安装速度通常比 conda 快。但有个坑:Snakemake 依赖的一些系统工具(比如 graphviz、R、wget),pip 不会自动帮你装。你得自己搞定。

一个小技巧:如果你在 macOS 上,可以用 Homebrew 补齐缺失的依赖。比如 brew install graphviz。Linux 上也类似,用 apt 或 yum 搞定。这样 pip + 系统包管理器组合,既快又全。

我个人更习惯用 conda,但如果你只是跑纯 Python 的流程,pip 真的就够了。轻啊。

验证安装:确认 Snakemake 已就绪

装都装完了,怎么知道它真的能用?三个验证点:

  1. 确认版本号 —— 看版本是否正常,有没有报错。
  2. 查看帮助信息 —— 确认命令行能正确解析。
  3. 运行一个最小测试用例 —— 确认核心功能正常。

先来最简单的:

snakemake --version

正常会输出类似 7.32.4 的版本号。如果报错,比如提示 "command not found",说明没装对,或者环境没激活。

再看帮助:

snakemake --help

输出应该很长,列出所有命令行参数。能看到参数列表,基本就稳了。

最后,我建议你跑一个最小测试。创建一个空目录,在里面建一个 Snakefile:

# Snakefile
rule all:
    input:
        "test.txt"

rule create_test:
    output:
        "test.txt"
    shell:
        "echo 'Hello Snakemake' > {output}"

然后在终端执行:

snakemake -c1

正常输出应该像这样:

Building DAG of jobs...
Using shell: /bin/bash
Provided cores: 1 (use --cores to define parallelism)
Rules claiming more threads will be scaled down.
Job stats:
job           count    min threads    max threads
----------  -------  -------------  -------------
all                1              1              1
create_test        1              1              1
total              2              1              1

Select jobs to execute...
Execute 1 jobs...

[Mon Nov 18 13:42:21 2024]
rule create_test:
    output: test.txt
    jobid: 1
    reason: Missing output files: test.txt
    resources: tmpdir=/var/folders/...

Execute 1 jobs...

1 of 2 steps (50%) done
Execute 1 jobs...

2 of 2 steps (100%) done

然后检查 test.txt 是否生成,内容是不是 "Hello Snakemake"。

验证成功标志:

  • snakemake --version 输出版本号
  • snakemake --help 显示全部参数
  • 最小 Snakefile 能正常跑通,生成目标文件

我曾经踩过一个坑:本地跑的版本是 7.x,但服务器上装的是 5.x。语法不一样,导致流程在服务器上跑不通。所以我建议你把版本输出记下来,放到文档里。后面出问题,版本差异是第一个要排除的因素。

敲黑板:虚拟环境是底线。不管是 conda 环境还是 venv,都永远不要在 base 环境里直接装 Snakemake。这是我测过无数次后得出的铁律。出了问题,删环境重来,才最干净。
Snakemake 安装决策流程图 开始安装 Snakemake 检查环境要求(Python ≥3.8、OS、磁盘) 选择安装方式 conda 安装 新手推荐 pip 安装 轻量快速 conda create -n snakemake_env python=3.10 python3 -m venv snakemake_venv && pip install 验证安装:--version / --help / 运行测试