Snakemake 安装:从环境搭建到验证

安装 Snakemake,说白了就是三步走:选环境 → 装包 → 验证。我做过不少生物信息学项目,几乎没见过有人直接在系统 Python 里装这个——太容易冲突了。所以,我强烈建议你从一开始就用隔离环境。

这一章,我会带你走三种安装路子。你根据自己的情况选一种就行。

2.1 用 conda 搭建隔离环境

我个人习惯用 conda 来管理 Python 环境,尤其是做生信分析的时候。为什么呢?因为 Snakemake 本身就能直接调用 conda 来管理软件的依赖,你要是连它自己的环境都用 conda 管着,整个流程就非常统一。

2.1.1 创建专用环境

先确保你已经装了 Miniconda 或者 Anaconda。然后执行下面这条命令:

conda create -n snakemake_env python=3.10 -y

这里 -n snakemake_env 是环境名,你可以随便改。我一般用 smk 或 snakemake,简洁一些。python=3.10 是版本号,我建议用 3.9 或 3.10,太老的版本会有兼容问题。

小技巧: 如果你在服务器上装,记得先看看有没有外网权限。很多生信服务器是离线的,那就得用本地通道或者离线包了。

2.1.2 激活环境并安装 Snakemake

创建完后,激活环境:

conda activate snakemake_env

你会看到命令行前面多了个 (snakemake_env),这就是环境生效的标志。然后直接用 pip 装(conda 的默认通道里 Snakemake 版本有时比较旧):

pip install snakemake

当然,你也可以继续用 conda:

conda install -c conda-forge -c bioconda snakemake

我个人更推荐 pip,因为版本更新快,而且兼容性更好。conda-forge 里的版本有时候会滞后一两周。

注意: 千万不要在 base 环境里直接装 Snakemake!我见过太多人把 base 环境搞乱了,最后连 python 都启动不了。用独立环境,出问题删掉重来就行。

2.2 用 pip 直接安装

如果你不想用 conda,或者你的项目很简单,那直接用 pip 装也行。

pip install snakemake

就这么简单?嗯,其实有个坑——如果你系统里同时有 Python 2 和 Python 3,记得用 pip3 或者 python -m pip:

python3 -m pip install --user snakemake

--user 这个参数很好用,它会把包装到你用户目录下,不需要 sudo 权限。

避坑指南: 我曾经在 Ubuntu 18.04 上直接用 pip install snakemake,结果它给我装了 Python 2 版本,运行直接报错。后来才发现默认 pip 指向的是 pip 2。所以,最好用 python3 -m pip 来确保是 Python 3。

2.3 从源码安装(不推荐,但了解一下)

源码安装一般用不上,但万一你想尝尝鲜,或者要改 Snakemake 的内部逻辑,那就得走这一条路。

先从 GitHub 克隆代码:

git clone https://github.com/snakemake/snakemake.git
cd snakemake

然后安装:

pip install -e .

-e 表示开发模式,你对代码做的任何修改都会实时生效。这在你二次开发的时候特别有用。

注意: 源码安装依赖很多编译工具和 Python 包。如果你机器上没有 gcc、g++、libssl-dev 这些东西,会报错。你要确认有没有时间和网络去解决这些依赖。曾经有个项目急用 Snakemake,我图新鲜搞源码安装,结果折腾了两个小时才把所有依赖装全……后来我老老实实改回 pip 了。

2.4 验证安装是否成功

装好了,怎么知道它能不能用?跑一下版本号看:

snakemake --version

正常你会看到类似这样的输出:

7.32.4

如果有这个数字,说明安装成功了。但别急,这只是最基础的验证。我建议你再多跑几步:

2.4.1 检查帮助信息

snakemake --help

命令不会报错,而且会输出一大串参数说明。

2.4.2 跑一个最简单的 Snakefile

创建一个测试目录,里面放个 Snakefile:

mkdir test_smk
cd test_smk
echo "rule all:" > Snakefile
echo "    input:" >> Snakefile
echo '        "test.txt"' >> Snakefile
echo "rule create_test:" >> Snakefile
echo "    output:" >> Snakefile
echo '        "test.txt"' >> Snakefile
echo "    shell:" >> Snakefile
echo '        "echo hello > {output}"' >> Snakefile

然后执行:

snakemake -c1

如果一切正常,会生成一个 test.txt,里面内容就是 hello。

小提示: -c1 表示用 1 个 CPU 核心。你还可以试试 snakemake -c1 --forceall 来强制重新跑一次。

2.5 三种安装方式对比

我做了一张表格,把三种方式的特点列出来,方便你选择:

安装方式推荐场景优点缺点
conda 环境 + pip生信项目、多项目隔离环境干净、版本可控需要先装 conda
pip 直接安装快速验证、单项目简单、快捷可能污染系统环境
源码安装二次开发、尝鲜可修改源码依赖多、安装慢

2.6 本章知识结构图

下面这张图可以帮你理清整个安装流程:

Snakemake 安装流程总览 Conda 环境 + pip 推荐用于生信项目 pip 直接安装 快速验证、简单场景 源码安装 二次开发、尝鲜 验证安装 snakemake --version 运行测试 Snakefile 验证规则、工作流正常 选择一种安装方式 → 验证 → 运行测试,这就是完整的 Snakemake 环境搭建流程
总结: 三种安装方式没有绝对的好坏,关键是看你的使用场景。我个人强烈建议你走 conda 环境 + pip 这条路,既灵活又干净。装了之后,别忘了用 snakemake --version 和跑一个最简单的 Snakefile 来确认一切都正常。