2. 安装 Snakemake:先把锅架好
说实话,我见过不少新手上来就 pip install snakemake,然后折腾半天报错。为啥?因为 Snakemake 依赖挺多的,直接装容易翻车。你想想看,搞生信流程,环境干净是第一位的。
这一章咱们就把锅架稳。我带你走三条路:Conda、Pip、还有验证。我个人习惯走 Conda 路线,原因后面会讲。
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 验证安装是否成功
装完别走,测一下。我一般做三个检查:
- 命令是否存在:
snakemake --version - 核心功能:
snakemake --help能否正常显示 - 跑一个最小流程:写个空 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 这张图带你理清安装逻辑
下面这张图总结了整个安装流程和决策点。我画的时候把常见的坑也标出来了,你存着用。
2.7 环境配置常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
snakemake: command not found | 没激活环境或没安装 | mamba activate snakemake-env 再试 |
ImportError: No module named snakemake | Pip 安装到其他 Python 了 | 检查 which python 是否在环境内 |
| 安装超慢 | 默认源在国外 | 换国内镜像源 |
| 依赖版本冲突 | 环境不干净 | 新建一个干净环境再装 |