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 里的版本有时候会滞后一两周。
2.2 用 pip 直接安装
如果你不想用 conda,或者你的项目很简单,那直接用 pip 装也行。
pip install snakemake
就这么简单?嗯,其实有个坑——如果你系统里同时有 Python 2 和 Python 3,记得用 pip3 或者 python -m pip:
python3 -m pip install --user snakemake
--user 这个参数很好用,它会把包装到你用户目录下,不需要 sudo 权限。
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 表示开发模式,你对代码做的任何修改都会实时生效。这在你二次开发的时候特别有用。
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 --version 和跑一个最简单的 Snakefile 来确认一切都正常。