前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Anaconda:解决你装包的烦恼

Anaconda:解决你装包的烦恼

作者头像
阿凡亮
发布2020-04-14 09:16:53
7750
发布2020-04-14 09:16:53
举报
文章被收录于专栏:生物信息学

前言

生物信息学的日常就是利用五花八门的工具和各种各样的数据打交道,很多时候需要在命令行安装软件或者包。我相信每一个生信人都碰到过安装软件或包时无法解决依赖的囧况,安装软件或者包,听起来是一件很简单的一件事,实际情况却不是如此。比如说编译时碰到系统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这个安装包,那么安装命令如下

代码语言:javascript
复制
bash Anaconda3-2019.10-Linux-x86_64.sh

后面会有一些选项停顿,直接回车确认。

1

包管理

  • 安装包

假如我要安装scipy这个科学计算包,那么可以输入如下命令

代码语言:javascript
复制
conda install scipy

conda会自动搜索并解决包依赖项,你只需要按回车即可。有时候我们想安装某个指定版本的包,那么就需要先知道conda里面存在哪些版本的包,可以输入如下命令就行搜索

代码语言:javascript
复制
conda search scipy

搜索结果还挺多的,部分结果如下

如果我想安装0.19.1这个版本的scipy,那么输入如下命令

代码语言:javascript
复制
conda install scipy=0.19.1

最后一列信息为channel,这个channe是很重要的一个信息,有时候一些包找不到,很大原因是当前的channe里面还没有,但是其他channel实际上有。怎样添加channel呢?稍安勿躁,后面添加镜像部分会提到。

  • 删除包

有安装就有卸载,卸载包命令如下

代码语言:javascript
复制
conda remove scipy
  • 更新包
代码语言:javascript
复制
conda update scipy

2

管理环境

环境非常有用,它能让你为某个项目单独建立一个运行时,而不会与现有的环境产生冲突。此外,当你需要将项目迁移到其他机器的时候,可以将整个环境迁移过去,彻底解决移植的难题。

  • 建立环境

先看如下命令

代码语言:javascript
复制
conda create -n env_name package_names

上面的命令中,env_name 是设置环境的名称(-n 是指该命令后面的env_name是你要创建环境的名称),package_names 是你要安装在创建环境中的包名称。例如创建环境名称为py3,并安装最新版本的Python3,那么在终端中输入

代码语言:javascript
复制
conda create -n py3 python=3
  • 列出环境
代码语言:javascript
复制
conda env list 

你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。

  • 删除环境

如果你不再使用某个环境,可以使用如下命令删除指定的环境

代码语言:javascript
复制
conda env remove -n env_name
  • 进入环境
代码语言:javascript
复制
source activate env_name

在环境中安装包的命令与前面一样:conda install package_name。不过,这次你安装的包仅在你进入此环境后才可用。其他环境是不知道这个包的存在的。

  • 离开环境
代码语言:javascript
复制
source deactivate
  • 共享环境

共享环境非常有用,它能让其他人安装你的代码中使用的所有包,并确保这些包的版本正确。比如你开发了一个数据分析系统,你要提交给项目部署系统的王二狗来部署你的项目,但是王二狗并不知道你当时开发时使用的是哪个python版本,以及使用了哪些包和包的版本。这怎么办呢?你可以在你的环境中终端中使用如下命令将你当前的环境保存到文件中。

代码语言:javascript
复制
conda env export > environment.yaml

导出的环境文件,在其他电脑中如何使用呢?使用如下命令加载刚刚导出的环境

代码语言:javascript
复制
conda env create -f environment.yaml

3

设置国内镜像

如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源(https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)有Anaconda仓库的镜像,如下图所示:

将红框中的代码复制保存到 ~/.condarc 文件。这个文件记录着我们对conda的配置。保存之后可以用如下命令检查一下

代码语言:javascript
复制
conda config  --show

可以看到已经成功加入了几个不同channels的镜像地址。

专注生物学领域的bioconda的channel也包含在里面了。假设需要安装DESeq2这个包,这是一个发布在bioconductor的R包。默认的channel里面是没有的。可以使用如下命令进行安装

代码语言:javascript
复制
conda install -c bioconda bioconductor-deseq

上述命令中的“-c bioconda”就是告诉conda,要去bioconda这个channel这个源去检索DESeq2这个包。

4

加分篇

  • 重命名环境
代码语言:javascript
复制
conda create --name newname --clone oldname  #克隆环境conda remove --name oldname --all  #彻底删除旧环境
  • 回滚
代码语言:javascript
复制
conda list --revisions
conda install --revision [revision number]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生物信息学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档