装生信软件最烦的就是依赖打架:这个工具要 samtools 1.9,那个非要 1.19,装着装着把 base 搞崩,重装 conda 的心都有了。其实办法很简单——别把所有东西堆在一个环境里,一个项目开一个独立 conda 环境,建好还能导出 yml 原样搬到别的机器。这一讲把 conda 日常会用到的命令一次理清:查看、建用、导出复现、删除清理、维护,照着改改就能套到自己的项目上。
为什么要管好环境
conda 环境的本质是给每个项目一个独立软件沙箱。把不同项目的依赖彻底隔开,是分析可复现的第一步。装生信工具记得同时挂 conda-forge 和 bioconda,绝大多数包都在这两个频道里。
核心命令速查
下面按「查看 / 建用 / 导出 / 删除清理 / 维护」分组,是 conda 日常的全部高频操作,按需复制:
#!/bin/bash# conda 环境管理常用命令速查,按需复制# ---- 查看 ----conda --version # 看 conda 版本conda info # 看配置概况conda env list # 列出所有环境conda list # 当前环境装了哪些包conda list | grep samtools # 查某个包装没装conda search -c bioconda samtools # 搜频道里有哪些版本# ---- 建 / 用 ----conda create -n rnaseq python=3.10 -y # 新建环境conda activate rnaseq # 激活conda deactivate # 退出当前环境conda install -c bioconda -c conda-forge bwa hisat2 samtools -y # 装包conda run -n rnaseq samtools --version # 不激活,直接在某环境里跑命令# ---- 导出 / 复现 ----conda envexport --no-builds > rnaseq.yml # 导出(跨平台加 --no-builds)conda env create -f rnaseq.yml # 从 yml 还原conda create -n rnaseq_bak --clone rnaseq -y # 克隆一份# ---- 删 / 清理 ----conda env remove -n rnaseq_bak -y # 删整个环境conda remove -n rnaseq samtools -y # 只删某个包conda clean -a -y # 清缓存腾空间# ---- 维护 ----conda update -n base conda -y # 升级 conda 本身conda config --show channels # 看频道配置conda config --set channel_priority strict # 开严格频道优先级
建环境务必带 -n 名字,别在 base 里装项目包;conda run -n 环境 命令 可以不激活直接调用。
示例的输出日志
挑几个只读命令跑一遍,确认 conda 可用、yml 合法(建/删环境有副作用,这里不实跑):
conda 25.1.1# conda environments:#base ~/anaconda3--- environment.yml 解析 ---env: rnaseqtools: 8--- 频道配置 ---channels: - conda-forge - bioconda - defaultsOK
版本、环境列表、yml 解析、频道配置都正常——命令语法没问题,可放心照着建环境。
扩展:用 yml 一次装好整套
环境复杂时,与其一条条 install,不如写一份 environment.yml 一键装好:
name:rnaseqchannels:-conda-forge-biocondadependencies:-python=3.10-fastqc-multiqc-trim-galore-hisat2-samtools=1.19-subread-bcftools
存成 environment.yml 后 conda env create -f environment.yml,几分钟装好整套,换机器也靠它复现。
避坑指南
- 装包找不到 → 确认 channels 里有 bioconda 和 conda-forge
- base 被装乱 → 项目包永远别装 base,单开环境
- 磁盘吃紧 →
conda clean -a 清缓存
📦 完整代码 + 测试数据下载
百度网盘链接:https://pan.baidu.com/s/1lrfipr_rmfEKr1fHK7UpKA?pwd=l01c
提取码:l01c(代码已实测可直接运行,建议保存到自己网盘)