Snakemake 安装与环境配置

好了,咱们开始动手吧。Snakemake 说到底是个 Python 工具,所以它的安装其实挺简单的。但简单归简单,环境配不好,后面哭都来不及。

我个人习惯在项目开始前,先把 Python 版本和包管理器定下来。你想想看,Python 版本不对,后面工具链怎么跑得起来?

1. Python 环境要求

Snakemake 官方支持 Python 3.7 及以上版本。但我建议你直接用 Python 3.9 或 3.10,别问为什么,问就是我在项目中遇到过 3.7 下某些依赖库不兼容的坑。

Python 版本 Snakemake 兼容性 个人建议
3.7 可用,但部分新特性不支持 不推荐,除非有历史包袱
3.8 兼容良好 可以,但别用太久
3.9 最佳选择 强烈推荐
3.10+ 兼容性好 也很推荐,但注意个别库的兼容性
小提示:检查当前 Python 版本的方法:打开终端,输入 python --version 或 python3 --version。

那怎么方便地管理 Python 版本呢?我建议用 Conda。它不仅能管理 Python,还能隔离开不同的项目环境,避免依赖冲突。

2. 使用 Conda 安装 Snakemake

Conda 是我在生物信息学项目里的首选。说白了,Conda 能帮你把各种乱七八糟的依赖一次性搞定。

2.1 安装 Conda 本身(如果没有的话)

如果你已经装了 Anaconda 或 Miniconda,直接跳过这步。如果没有,去官网下载 Miniconda 就行,轻量够用。

# 下载 Miniconda(Linux 示例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 安装
bash Miniconda3-latest-Linux-x86_64.sh

# 按提示操作,最后记得 source ~/.bashrc 或者重新登录终端

2.2 创建并激活隔离环境

我建议给每个项目建一个独立的环境。这样就算 A 项目用的是旧版 Snakemake,B 项目用新版,也不会打架。

# 创建一个名叫 snakemake_env 的环境,指定 Python 3.9
conda create -n snakemake_env python=3.9

# 激活环境
conda activate snakemake_env

2.3 安装 Snakemake

环境建好了,直接安装。Conda 会自动处理依赖,省心。

conda install -c bioconda -c conda-forge snakemake

这里加了 -c bioconda 和 -c conda-forge 两个频道。bioconda 是生物信息学专用频道,Snakemake 的主场。conda-forge 是补充,有时能提供更新的版本。

注意:如果网络不好,可以换个国内镜像源。比如清华的 conda 镜像,速度能快不少。

3. 使用 Pip 安装 Snakemake

如果你不想用 Conda,或者项目对轻量化有要求,Pip 也是个选择。不过,我提前说一句:Pip 安装有时会遇到依赖冲突,尤其是涉及到生物信息学底层 C 库的时候。

3.1 创建虚拟环境(推荐)

用 Pip 安装时,我更推荐先用 Python 自带的 venv 隔离环境。

# 创建虚拟环境
python3 -m venv snakemake_venv

# 激活(Linux/Mac)
source snakemake_venv/bin/activate

# 激活(Windows)
# snakemake_venv\Scripts\activate

3.2 安装 Snakemake

pip install snakemake

这就完了?对,就一行。但别高兴太早,我曾经在某个老旧服务器上跑这条命令,结果因为 GCC 版本太低,编译某些依赖包时直接报错。那叫一个崩溃。

所以,如果条件允许,我还是推荐 Conda 路线。省心,真的省心。

4. Snakemake vs Conda vs Pip:怎么选?

安装方式 优点 缺点 适合场景
Conda 依赖管理好,环境隔离强 安装包较大,首次下载稍慢 生物信息学 / 多工具链项目
Pip 轻量,安装快 依赖冲突时有发生 简单项目 / 快速验证
源码编译 能拿到最新开发版 麻烦,依赖手动解决 做 Snakemake 开发或贡献

5. 验证安装是否成功

装完了,怎么知道它行不行?别急,来两步验证。

5.1 检查版本号

snakemake --version

如果看到类似 7.32.4 这样的输出,说明安装成功了。如果报 command not found,嗯,别慌。检查两件事:

  • 环境是否激活了? 看看终端开头有没有 (snakemake_env) 这样的字样。
  • 安装是否真完成了? 重新跑一遍安装命令,看有没有报错。

5.2 运行 Snakemake 自带的测试

我个人喜欢直接跑一个最小工作流来验证。新建一个文件 test.smk,内容如下:

rule all:
    input:
        "test.txt"

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

然后运行:

snakemake -s test.smk -c1

如果一切正常,你会看到 Snakemake 新建了一个 test.txt,里面写着 "Hello Snakemake"。至此,环境配置完美收官。

验证成功标志:
  • snakemake --version 返回版本号
  • snakemake -s test.smk -c1 成功生成目标文件

安装流程一览

下面这张图总结了整个安装和验证的流程,你可以把它当做速查表。

Snakemake 安装与验证流程图 Python ≥ 3.7 Conda 安装 Pip 安装 conda create -n env conda install -c bioconda python -m venv env pip install snakemake 验证:snakemake --version ✔ 准备就绪

嗯,图里已经走了一遍完整的流程。从 Python 环境到安装方式选择,再到最后的验证,每一步都很清楚。

安装和环境配置这块儿,其实最怕的是一上来就卡住。当初我有个同事,装完 Snakemake 后直接 --version 显示正确,但一跑工作流就报 ModuleNotFoundError。查了半天,原来是虚拟环境没激活,Snakemake 调用的系统 Python 里根本没有装依赖包。你说冤不冤?

所以,我这里再啰嗦一句:每次运行 Snakemake 前,确认一下当前所在的环境。养成习惯,能省不少 debug 时间。