前言
生物信息学的日常就是利用五花八门的工具和各种各样的数据打交道,很多时候需要在命令行安装软件或者包。我相信每一个生信人都碰到过安装软件或包时无法解决依赖的囧况,安装软件或者包,听起来是一件很简单的一件事,实际情况却不是如此。比如说编译时碰到系统lib不存在或版本太低,安装一个python/R包却需要升级当前的python/R,而这又会导致之前安装好的包不能使用。今天给大家介绍一下跨平台包管理神器Anaconda,学习一下它在Linux下的正确使用姿势。
Anaconda是什么?
官方介绍“The World's Most Popular Python/R Data Science Platform”。简单来说,Anaconda是包管理器和环境管理器。
安装 Anaconda
在清华大学 TUNA 镜像源(https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/)选择对应的操作系统与所需的Python版本下载Anaconda安装包。比如我下载了Anaconda3-2019.10-Linux-x86_64.sh这个安装包,那么安装命令如下
bash Anaconda3-2019.10-Linux-x86_64.sh
后面会有一些选项停顿,直接回车确认。
1
包管理
- 安装包
假如我要安装scipy这个科学计算包,那么可以输入如下命令
conda install scipy
conda会自动搜索并解决包依赖项,你只需要按回车即可。有时候我们想安装某个指定版本的包,那么就需要先知道conda里面存在哪些版本的包,可以输入如下命令就行搜索
conda search scipy
搜索结果还挺多的,部分结果如下
如果我想安装0.19.1这个版本的scipy,那么输入如下命令
conda install scipy=0.19.1
最后一列信息为channel,这个channe是很重要的一个信息,有时候一些包找不到,很大原因是当前的channe里面还没有,但是其他channel实际上有。怎样添加channel呢?稍安勿躁,后面添加镜像部分会提到。
- 删除包
有安装就有卸载,卸载包命令如下
conda remove scipy
- 更新包
conda update scipy
2
管理环境
环境非常有用,它能让你为某个项目单独建立一个运行时,而不会与现有的环境产生冲突。此外,当你需要将项目迁移到其他机器的时候,可以将整个环境迁移过去,彻底解决移植的难题。
- 建立环境
先看如下命令
conda create -n env_name package_names
上面的命令中,env_name 是设置环境的名称(-n 是指该命令后面的env_name是你要创建环境的名称),package_names 是你要安装在创建环境中的包名称。例如创建环境名称为py3,并安装最新版本的Python3,那么在终端中输入
conda create -n py3 python=3
- 列出环境
conda env list
你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。
- 删除环境
如果你不再使用某个环境,可以使用如下命令删除指定的环境
conda env remove -n env_name
- 进入环境
source activate env_name
在环境中安装包的命令与前面一样:conda install package_name。不过,这次你安装的包仅在你进入此环境后才可用。其他环境是不知道这个包的存在的。
- 离开环境
source deactivate
- 共享环境
共享环境非常有用,它能让其他人安装你的代码中使用的所有包,并确保这些包的版本正确。比如你开发了一个数据分析系统,你要提交给项目部署系统的王二狗来部署你的项目,但是王二狗并不知道你当时开发时使用的是哪个python版本,以及使用了哪些包和包的版本。这怎么办呢?你可以在你的环境中终端中使用如下命令将你当前的环境保存到文件中。
conda env export > environment.yaml
导出的环境文件,在其他电脑中如何使用呢?使用如下命令加载刚刚导出的环境
conda env create -f environment.yaml
3
设置国内镜像
如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源(https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)有Anaconda仓库的镜像,如下图所示:
将红框中的代码复制保存到 ~/.condarc 文件。这个文件记录着我们对conda的配置。保存之后可以用如下命令检查一下
conda config --show
可以看到已经成功加入了几个不同channels的镜像地址。
专注生物学领域的bioconda的channel也包含在里面了。假设需要安装DESeq2这个包,这是一个发布在bioconductor的R包。默认的channel里面是没有的。可以使用如下命令进行安装
conda install -c bioconda bioconductor-deseq
上述命令中的“-c bioconda”就是告诉conda,要去bioconda这个channel这个源去检索DESeq2这个包。
4
加分篇
- 重命名环境
conda create --name newname --clone oldname #克隆环境conda remove --name oldname --all #彻底删除旧环境
- 回滚
conda list --revisions
conda install --revision [revision number]