2. 安装 Snakemake:先把锅架好

说实话,我见过不少新手上来就 pip install snakemake,然后折腾半天报错。为啥?因为 Snakemake 依赖挺多的,直接装容易翻车。你想想看,搞生信流程,环境干净是第一位的。

这一章咱们就把锅架稳。我带你走三条路:Conda、Pip、还有验证。我个人习惯走 Conda 路线,原因后面会讲。

别用系统 Python:千万不要在系统默认的 Python 里装 Snakemake。我见过有人用 sudo pip install,结果把系统搞崩了。咱们用隔离环境。

2.1 为啥先装 Mamba?

Conda 默认的求解器很慢,特别是包多的时候。Mamba 是 Conda 的 C++ 重写版,快好几倍。我建议你直接装 Mamba,然后用 mamba 命令代替 conda。

装 Mamba 有两种方式:

  • Miniforge:自带 Mamba 的 Miniconda 替代品
  • Conda 再装 Mamba:先有 Conda,再 conda install mamba -n base -c conda-forge

我个人推荐Miniforge。一步到位,省事。

2.2 从零开始:安装 Miniforge

到 Miniforge 的 GitHub Release 页面,找到Miniforge3-Linux-x86_64.sh。下载并运行:

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh

一路 yes 就好。安装完后,重新登录或 source ~/.bashrc,然后检查一下:

mamba --version
# 预期输出类似:mamba 1.x.x (conda 23.x.x)
换国内镜像:我在项目初期没换源,下载慢得想砸电脑。建议配清华镜像:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/。

2.3 用 Mamba 创建一个干净的环境

我习惯每个项目一个独立环境。这样做的好处是依赖互不干扰。我曾经遇到过两个项目依赖同一个包的不同版本,炸得一塌糊涂。从那以后我就老老实实隔离了。

创建 Snakemake 专属环境:

mamba create -n snakemake-env python=3.10
mamba activate snakemake-env

这里我选了 Python 3.10。为啥?因为我测试过,3.10 对 Snakemake 7.x 和 8.x 兼容性最好。你非要 3.11 或 3.12 也行,但有些旧插件可能不兼容。

2.4 正式安装 Snakemake

环境激活后,直接上 Mamba 安装。这步最稳:

mamba install -c conda-forge -c bioconda snakemake

你看,我指定了 -c conda-forge -c bioconda。这俩频道是生信标配。Snakemake 本体在 conda-forge,很多生信工具在 bioconda。一起指定,避免冲突。

如果网速慢,可以考虑 Pip 安装。我有时候在 Docker 里用 Pip,方便:

pip install snakemake

但 Pip 的问题是依赖探测不如 Conda 严格。你想,Conda 会帮你检查所有依赖的版本,Pip 有可能覆盖你已有的包。所以我建议:正式项目用 Mamba,快速原型用 Pip。

版本锁定:我在生产流程里都会把版本写死,防止未来更新破坏兼容性。比如:mamba install snakemake==8.0.0。

2.5 验证安装是否成功

装完别走,测一下。我一般做三个检查:

  1. 命令是否存在:snakemake --version
  2. 核心功能:snakemake --help 能否正常显示
  3. 跑一个最小流程:写个空 Snakefile 试试

先来最简单的:

snakemake --version
# 预期输出:8.0.0 (或你装的版本)

然后写个测试文件 test.smk:

rule all:
    input:
        "hello.txt"

rule write_hello:
    output:
        "hello.txt"
    shell:
        "echo 'Hello Snakemake!' > {output}"

用这个命令跑:

snakemake -s test.smk -c1

如果看到 1 of 1 steps (100%) done,恭喜你,装好了!

别忘激活环境:每次新开终端都要 mamba activate snakemake-env。我刚开始常忘,然后敲 snakemake 提示 command not found,挺尴尬的。

2.6 这张图带你理清安装逻辑

下面这张图总结了整个安装流程和决策点。我画的时候把常见的坑也标出来了,你存着用。

Snakemake 安装与验证流程 开始安装 选择安装方式 Mamba(推荐) / Pip 安装 Miniforge bash Miniforge3-Linux-x86_64.sh 创建隔离环境 mamba create -n snakemake-env python=3.10 安装 Snakemake mamba install -c conda-forge -c bioconda snakemake 验证 snakemake --version

2.7 环境配置常见问题

问题原因解决方案
snakemake: command not found没激活环境或没安装mamba activate snakemake-env 再试
ImportError: No module named snakemakePip 安装到其他 Python 了检查 which python 是否在环境内
安装超慢默认源在国外换国内镜像源
依赖版本冲突环境不干净新建一个干净环境再装