第二章 安装与环境配置:先搭好舞台

好,我们正式开始搭建 Snakemake 的工作环境。我个人习惯先把开发环境收拾利索了再动手——你想想看,要是环境没配好,后面跑流程时冒出各种版本冲突,排查起来特别闹心。这一章咱们就把安装这件事讲透。

为什么推荐 conda?

Snakemake 本身是 Python 工具,装它不难。但在实际项目中,真正的麻烦是 外部工具链的依赖管理。比如你同时要用 FastQC、STAR、samtools,每个都有自己的版本要求。这时 conda 就显出优势了。

说白了,conda 能帮你隔离不同的软件环境。我在项目中遇到过 Python 2 和 Python 3 共存的尴尬局面——有了 conda,这种问题就解决了。

核心思路:用 conda 创建一个干净的专属环境,把 Snakemake 和所有分析工具都装在一起。这样既不影响系统 Python,也方便团队复制环境。

方法一:用 conda 创建干净环境

我建议先从 conda 开始。如果还没装 Miniconda,先去官网下载安装。装好后,打开终端执行以下命令:

conda create -n snakemake_env python=3.10 -y
conda activate snakemake_env

这条命令做了什么?

  • -n snakemake_env:给环境取个名字,叫 snakemake_env。
  • python=3.10:指定 Python 版本。我个人推荐 3.10,兼容性好,社区也稳定。
  • -y:自动确认,省得你每次按 y。

激活环境后,命令行前面会多出 (snakemake_env) 的标识,说明你现在是在这个隔离环境里操作。

安装 Snakemake

环境激活后,安装 Snakemake 非常简单:

conda install -c conda-forge -c bioconda snakemake -y

这里指定了 conda-forge 和 bioconda 两个频道。bioconda 是生物信息学工具的官方仓库,Snakemake 的最新稳定版通常都在里面。

一点经验:如果你在国内网络环境下安装,conda 下载可能很慢。可以试试换国内镜像源,比如清华 TUNA 的 conda 镜像。具体配置方法网上有文档,用过都说好。

方法二:pip 安装(备选)

如果 conda 实在不方便,或者你对 pip 更熟悉,也可以直接用 pip 安装。不过要提醒你——pip 不负责管理外部命令行工具,像 samtools、STAR 这些你还得单独装。

pip install snakemake

或者安装带完整依赖的版本:

pip install snakemake[all]

[all] 可选,它会带上一些常用扩展,比如报告生成、Google Cloud 支持等。默认安装已经够用,我觉得。

注意:不要直接在系统全局 Python 下用 pip 装 Snakemake。我曾经踩过这个坑——项目一多,包版本互相踩踏,最后只能重装系统。用 conda 或虚拟环境是更稳妥的做法。

验证安装是否成功

装完后,记得验证一下。在终端输入:

snakemake --version

你应该会看到类似 7.32.4 这样的版本号。看到版本号,说明安装成功了。

再跑一个最简单的测试:

snakemake -j 1

这个命令会告诉 Snakemake 使用 1 个 CPU 核心,在当前目录下寻找 Snakefile 并尝试执行。如果当前目录没有 Snakefile,它会报错——没关系,这说明 Snakemake 能正常工作了。

配置 Python 环境与 Bioconda 频道

除了 Snakemake 本身,我们还需要配置好 Python 环境。为什么?因为你的工作流里很可能要用到 Python 脚本(比如数据清洗、格式转换)。

建议在刚建好的 snakemake_env 环境里,提前安装一些常用 Python 库:

conda install pandas numpy matplotlib -y

pandas 和 numpy 是数据处理的老搭档了。matplotlib 用于绘图——我曾用它画过测序数据的质控图,效果不错。

另外,别忘了配置 bioconda 频道。bioconda 是生物信息学界的宝库,里面有超过 7000 个软件包。安装时我们其实已经用了 -c bioconda,但为了以后方便,可以把它加到默认频道:

conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --set channel_priority strict

这样配置后,以后 conda install 时就不需要每次都写 -c 参数了。注意 channel_priority strict 这个设置——它能帮助避免依赖冲突。

关于版本锁定的建议

说一个我经常强调的点:锁定版本号。当你把工作流分享给同事或部署到服务器时,环境不一致会导致各种稀奇古怪的错误。解决办法是导出环境文件:

conda env export > environment.yaml

这个 environment.yaml 文件会记录所有包的精确版本号。别人拿到后,直接:

conda env create -f environment.yaml

就能还原一模一样的开发环境。这就是可复现流程的第一步。

小技巧:把 environment.yaml 跟你的 Snakefile 放在同一个仓库里。每次更新工作流时,记得同步更新这个文件。我曾用这个习惯帮团队节省了大量排错时间。

安装流程全貌

我把这一章的安装流程整合成了一张图。你可以快速扫一眼,心里就有谱了:

Snakemake 安装与配置流程 安装 Miniconda conda create -n snakemake_env conda install snakemake snakemake --version conda env export 关键配置要点 • 指定 Python 3.10 • 添加 bioconda 频道 • 设置 channel_priority strict • 导出 environment.yaml

最后一个提醒:如果你用的是公司集群或共享服务器,可能没有 conda 的写入权限。这时可以试试 --prefix 参数,把环境装到你有写权限的目录下。具体用法:conda create --prefix /path/to/your/env python=3.10 -y。

好,到这一步,Snakemake 的开发环境就搭好了。接下来就可以正式开始写你的第一个工作流了。