2. Snakemake 安装与环境配置
装 Snakemake 这事儿,说实话比我想象中简单。我刚开始做生信管道时,被各种依赖搞到头大,但 Snakemake 的安装已经相当友好了。这一章我就带你走一遍,把你手上的环境配好,然后跑通第一个 Hello World。
2.1 安装前的准备
动手之前,先确认你的机器上有 Python 3.7 以上版本。Snakemake 从 7.x 开始全面拥抱 Python 3.8+,老版本的 Python 3.6 就别用了。
python3 --version
如果版本低于 3.7,先去官网装新版。我个人习惯装 Python 3.9,兼容性最好。
另外,你还需要一个包管理器。主流就两个:pip 和 conda。我一般推荐 conda,后面细说。
2.2 使用 pip 安装
最直接的方式,一行命令搞定:
pip install snakemake
嗯,这里要注意——如果你在系统 Python 里直接跑,很容易把全局环境搞乱。我在项目中遇到过,pip 安装时依赖冲突,把另一个项目搞崩了。从那以后,我养成了一个习惯:
python3 -m venv snakemake_env
source snakemake_env/bin/activate
pip install snakemake
虚拟环境隔离好了,随便折腾都不怕。
2.3 使用 conda 安装(推荐)
如果你做 ADMET 预测,后面肯定会用到 RDKit、OpenBabel 这些生物信息学库。pip 装这些东西经常翻车。conda 的二进制包预编译好了,省心很多。
conda create -n snakemake_env python=3.9
conda activate snakemake_env
conda install -c conda-forge snakemake
为什么推荐 conda-forge?因为 conda 默认的频道更新慢,而且有些依赖版本不对。我个人所有项目都只用 conda-forge 和 bioconda。你想想看,一个命令装完所有依赖,还带自动解决冲突,多爽。
2.4 源码安装
只有你打算修改 Snakemake 源码或者想尝鲜最新功能时,才需要源码安装。一般来说不需要。
git clone https://github.com/snakemake/snakemake.git
cd snakemake
pip install -e .
注意 -e 参数,它会把源码链接到你的 Python 环境,你改了代码立刻生效。我以前有一次为了修一个下游任务的 bug,直接改源码调试,确实方便。
2.5 验证安装
装完别急着跑。先验证一下:
snakemake --version
应该输出类似 7.32.4 这样的版本号。然后跑一个最简单的 Snakefile:
# Snakefile
rule all:
output: "hello.txt"
shell: "echo 'Hello Snakemake!' > {output}"
snakemake -c1
看到 “Finished job 0.” 就说明环境通了。我记得第一次跑通时,还真有点小激动——虽然就一行 echo。
常见误区:有些同学看到 snakemake --help 能用就以为装好了。实际上依赖可能不全,比如缺少 networkx 或者 graphviz。建议直接跑一个最小 snakefile 验证。
2.6 环境配置最佳实践
说白了,配环境不是一次性的活。后面你可能会加新工具、新库。我总结了几条经验:
- 把环境写进 YAML 文件:方便复现。
- 不要混用 pip 和 conda:先装 conda 包,最后再用 pip 装 conda 里没有的。
- 每个项目一个独立环境:别再往 base 里装了。
我项目组有个原则:Snakefile 第一行就是环境定义。具体做法是写一个 environment.yaml:
name: admet_pipeline
channels:
- conda-forge
- bioconda
dependencies:
- python=3.9
- snakemake>=7.0
- rdkit
- openbabel
conda env create -f environment.yaml
下次换台机器,秒建一模一样的环境。
2.7 常见问题与避坑
| 问题 | 原因 | 解决 |
|---|---|---|
| snakemake: command not found | 环境未激活 | 检查 conda activate 或 source 虚拟环境 |
| ImportError: No module named 'snakemake' | pip 安装到了系统 Python | 用 conda 重装或创建虚拟环境 |
| 安装超时 | 网络慢 | 换国内镜像:pip 加 -i https://pypi.tuna.tsinghua.edu.cn/simple |
| 依赖冲突 | conda 和 pip 混用乱了 | 删掉环境从头来,只走一条路 |
碰到问题先别慌。我一般三步走:查版本、看报错、搜 issue。Snakemake 社区很活跃,你遇到的坑 90% 已经有答案了。
conda list 看看所有包。你会发现 snakemake 自己带了 pandas、networkx、plumbum 等一堆好东西,省得你再手动装了。
这张图概括了安装决策流程。你按自己的电脑环境选一条路走就行。我个人走 conda 路线,至今没翻过车。