终极奥义! 生信软件安装神器~ conda 从入门到精通

  • Post author:
  • Post category:其他



图片




前言


图片

生物信息学分析常常需要用到许多不同的软件,常见安装方式有三种:

  1. 源码安装,要求安装者对包有较充分的认识,适用于开发者或深入学习和挑战者;

  2. 预编译版本安装,一般安装者将其拷贝到目录下即可运行;

  3. 第三方安装管理软件,

    如conda、Bioconductord等包管理软件和docker、singularity等镜像管理软件。

但是三种方式各有长处:

  1. 预编译版本最简单,但许多包并不提供这种版本。

  2. 绝大多数包都提供源码,但源码的依赖环境对于小白太过不友好(初期少不了砸键盘)。

  3. 第三方管理包帮你解决了环境依赖,

● 一些简单的了解和操作即可上手,通常来说是小白的首选,

● 但它上限绝不仅于此,像

docker****,


singularity

等可以跨平台,一次搭建幸福一生!

图片

图片

目录

1. conda的安装

1.1 下载

1.2 安装

2. conda环境认识

2.1 目录结构

2.2 进入base环境

3. conda管理包

3.1 安装包

3.2 卸载包

4. 环境管理

4.1 创建环境

4.2 在指定环境中安装、删除包

4.3 不同环境切换

4.4 删除环境

4.5 退出环境

5. conda安装源的问题

5.1 默认源无包

5.2 包在哪个源有

5.3 指定源安装

6 conda配置文件

6.1 源的配置

6.1.1 将源写入配置文件

6.1.2 源的读取顺序

6.1.3 源的数量

6.2 其他信息的配置

7. 环境拷贝(clone)

7.1 输出配置信息

7.2 依据文本配置信息重新安装



01


conda的安装

常见的

conda

有两个类型,分别为

miniconda



Anaconda

,前者是后者的轻量版本,

两者可安装的包是一致的,本文以

miniconda

安装为例。


1.1 下载

找到

miniconda

的下载页面,下载Linux版本,

图片

##下载链接
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh

图片


1.2 安装

上述下载的链接文件为安装

conda



bash

脚本文件,接下来执行命令,按操作提示

bash Miniconda3-py39_4.9.2-Linux-x86_64.sh

确认是否是想要安装的

conda

以及

python

版本,确认无误,直接

Enter键进入下一步

图片

回答1,确定版本信息,直接Enter进入安装

此回答前有一些条款,这里选择

yes

,后

Enter键进入下一步

图片

回答2,同意条约,选择yes

**重要:**此步骤询问安装路径,默认当前路径,版主当前是在/mnt/home/*/目录下(*表示作者名),执行的bash Miniconda3-py39_4.9.2-Linux-x86_64.sh命令,


  1. Enter键

    选择当前路径进行安装,

  2. 如果当前不是目标路径,可在 >>> 处直接输入目标路径,然后

    Enter键

    进入安装,

图片

回答3,安装路径,默认在当前目录


重要:

版主选择

no

,并

Enter

进入下一步,

  1. 该步骤会执行

    conda init

    命令,将conda命令写入环境变量文件

    .bashrc或.bash_profile

    中,此后的每次进入bash都会进入

    conda基础环境

  2. 版主喜欢静静的被支持,不要过多的打扰(PS:也是许多设计追求的体验之一)。

图片

回答4,是否写入环境变量文件,选择否

至此,

miniconda

安装完毕,安装后,目录下多了个

miniconda3

的文件夹,

图片

多了个miniconda3的文件夹



02


conda环境认识

当安装完成后,你跃跃欲试,发现输入

conda

,被提示该命令不存在。

  1. 如果在1.2中的

    回答4中选择了yes

    ,则不存在当前问题(虽然conda环境方便了,但是容易污染其他非conda的环境),

  2. 解决当前的问题就是了解

    miniconda3

    文件夹的构成。

图片

conda命令不存在


2.1 目录结构

conda的目录结构,描述几个和使用较相关的目录,

  1. /bin/文件夹,内含base环境的命令,如管理命令conda, activate等,

  2. /envs/文件夹,除base环境外的其他环境,在安装最初为空目录,可由conda create创建,

    ● 该目录下的每个子目录为

    一个环境,具有和base类似的目录结构,如/bin/目录

  3. /lib/文件夹,存放base环境的动态库,

  4. /pkgs/文件夹,存在base环境的包。

图片

miniconda3目录的子目录


2.2 进入base环境

版主喜欢使用时再进入环境,环境存在~/miniconda3/bin/activate文件中,

##进入base环境
source ~/miniconda3/bin/activate

图片

成功进入base环境的标识

现在输入conda有反应啦,出现以下提示,

图片



03


conda管理包


3.1 安装包

安装一个scipy包试试,

conda install scipy

图片

出现提示1,

图片

出现提示2,

出现以下结果,即表示安装成功,可使用conda list对比前后查看该包是否安装了。

图片


3.2 卸载包

##移除scipy包
conda remove scipy

图片



04


环境管理

多个不同的软件可能要求不同版本的依赖包和程序,如果都在base目录下进行,则每次都需要安装包和环境,

与之相对应的是

conda的可以管理多个独立的环境


4.1 创建环境

conda安装初始时,只含有

base

一个环境,

##查看已有环境
conda info --envs

图片

创建新的环境,通过指定–name或-n参数,

  1. 比如默认的conda安装使用的是

    python3.9

    ,而我的某些脚本只能在

    python2.x

    下运行,于是我可以创建一个新py2环境

  2. 新创建的环境在/envs/目录下,名称为–name指定的字符

##创建一个环境
conda create --name py2

图片
新创建的环境将位于envs目录下

也可以通过conda info –envs来查看新的环境,

图片


4.2 在指定环境中安装、删除包

安装包到指定环境,通过指定–name或-n参数,

##安装python2.7到py2环境
conda install -n py2 python=2.7
##在该环境中安装numpy包
conda install -n py2 numpy

也可以将创建环境和安装包结合到一条命令中。

conda create -n py2 python=2.7

更新指定环境包,额外指定–name或-n参数,

#更新包
conda update -n py2 numpy
#删除包
conda remove -n py2 numpy


4.3 不同环境切换

在py2环境中安装了python2后,并不能在当前环境中获得python2,使用which查看python命令,发现

  1. 无论python还是python3命令均指向

    base

    环境中的

    python

  2. 而pyhton2指向服务器**/usr/

    目录

    **,也不是我们**的py2**环境的目录(其目录见本文4.1)

图片

这时需要在

不同环境中切换

,使用conda activate py2,激活py2环境,

  • 该命令的使用前提是,当前环境conda命令能够找得到,比如我们当前是在

    base

    环境中,能够使用conda命令,

执行命令后,切换到

py2

环境(见标识),

  • 无论python还是python2命令均指向

    py2

    环境中的

    python

  • 而pyhton3无指向,因为当前

    已不在base环境中

图片

命令总结,

##激活py2
conda activate py2
##激活base
conda activate base
conda activate


4.4 删除环境

想要删除某环境,例如意外输入创建了

py4

环境

##创建的环境名不符合预期
conda create -n py4 python=2.7
##将环境和其下的包删除
conda remove -n py4 --all


4.5 退出环境

程序运行完,需要退出conda环境,退出顺序

py2 –> base –> bash

  • 当前在

    py2

    环境,执行命令后退到

    base

    环境,再次执行命令完全退出了

    conda环境

    ,到了

    bash环境

##退出当前环境
conda deactivate

图片



05


conda安装源的问题

为什么要关注源的问题?

  1. 最简单回答:源错了,包安装不了,或安装的包版本不对,或不适用某软件。

  2. 不同渠道的包存在相互覆盖,优先级等情况,我们来举个栗子。


5.1 默认源无包


admixture

软件是群体混合分析常用的工具之一,可使用conda安装,但

怎么我安装不了?

  • 安装出现报错,翻译成人话“在你的这四个源中找不到admixture软件包”。
##创建一个admixture环境安装该包
conda create -n admixture admixture

图片


5.2 包在哪个源有

到Anaconda官网查询,输入

admixture

检索,

图片

输入admixture进行检索

出现两条记录,第一条记录说明,该软件用于评估个体的祖先程度,对,这个就是梦中包,在

bioconda

源中,

  • 点击

    admixture

    绿色文字进入查看详情

图片

有两条记录,第一条就是目标

详细信息如版本号,发布的年份,包括安装方式,可以直接复制代码全装

图片


5.3 指定源安装

使用**-c或–channel**指定包的安装源,发现其能够找到该包,

##创建admixture环境并从bioconda安装admixture软件
conda create -n admixture -c bioconda admixture

图片

能够找到admixture包,选择y进入安装



06


conda配置文件


6.1 源的配置

将源写入配置文件,避免每次指定**-c**参数,也省去寻找源的繁琐步骤,

  1. conda的配置文件以

    隐藏文件形式

    存在,其路径

    /mnt/home/author/.condarc

  2. 将源写入配置文件,可以通过命令,和手动编辑**.condarc**文件等方式

图片

conda的配置文件

图片

显示文件为空

##查看当前源
conda config --show-sources

图片

当前源也为空


6.1.1 将源写入配置文件



bioconda

写入配置文件,

  • 可以看到**.condarc出现bioconda和defaults**两个渠道
##添加bioconda
conda config --add channels bioconda

图片

继续添加源

conda-forge



r

conda config --add channels conda-forge
conda config --add channels r


6.1.2 源的读取顺序

上面一顿操作后,已经拥有下图中的四个源,当存在多个源时,搜索就有一定的顺序:

  1. conda将依次

    从上往下

    在该源中去寻找包,如果找到了则停止搜索,如果没找到,更换源继续搜索,

  2. 当在命令安装时使用**-c

    参数指定时

    ,该指定源**搜索的优先级最高。

  3. 所以一般,在配置文件中拟定一个顺序。个人喜欢

    bioconda > conda-forge > r > defaults

图片


6.1.3 源的数量

百度搜索后发现有很多源,可编辑文件vim ~/.condarc进行添加,但是

源不是数量越多越好

  • 虽然多能保证包被搜索到可能性更高,但同样搜索一个包的时间更长,

  • 某些源某时间段可能存在访问问题,当在问题源上搜索时会浪费大量的时间,有时几分钟也搜索不出结果。



  • 包存在依赖时

    ,多个不同源的依赖包偶尔会存在冲突(版本不匹配),这种情况下

    卸载再安装

    依然会重复上述问题。

  • 因此将不同源的分别存到文件,如.condarc_bak_tsinghua, .condarc_bak_sjtu等,需要时将其改名为为**.condarc**文件即可,

可按以下方式使用某个源,先备份常用,再使用其他源。结束后可将文件名改回。

##保存常用的源配置
mv ~/.condarc ~/.condarc_bak
##使用清华源
mv ~/.condarc_bak_tsinghua ~/.condarc

清华源

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

上海交通大学源

channels:
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge/


6.2 其他信息的配置

这部分在平时较少使用,笔者也关注,在此略过。



07


环境拷贝(clone)

当你辛苦构建了一个环境,里面拥有几十上百个软件,如果更换服务器需要重新安装,又得花费大量时间。

  • conda提供将

    当前环境的版本和依赖信息

    输出到文件,重新安装时直接读取该文件。


7.1 输出配置信息



admixture

环境配置文件信息输出,

  • 输出信息包括

    环境名称、源配置、包以及路径等
##输出环境信息到文本
conda env export -n admixture > environment.yml

图片

admixture环境输出的信息

图片

braker2的环境输出信息


7.2 依据文本配置信息重新安装

##依照文本信息重新打造一个环境
conda env create -f environment.yml
##也可给环境重新命名
conda env create -n admixture_copy -f environment.yml

图片

图片

图片



THE END



版权声明:本文为abai0410原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。