如何使用Conda

在日常数据的分析过程中,我们往往会使用许许多多的软件;这些软件需要不同的依赖举个例子A软件需要python2的环境而B软件需要python3的环境,因此当你使用python去运行软件的时候往往敲下的命令像这样python A.py;这时候就需要仔细检查一下python是否是正确的版本python2|python3

不仅仅是python版本的问题,甚至有些软件在python包上也会有冲突,这样就很难办了;例如A软件需要的是numpy 1.0.4而B软件需要的是numpy 1.2.4;这时候运行不同的软件你就需要去指定加载不同版本的numpy包了。

conda的出现减少我们在软件安装上带来的困惑,让更多的精力投入到数据分析中。

预备知识

环境变量: 操作系统运行时的一些参数和系统配置;为了方便统称内存

简单的来说就是当系统启动的时候,一些东西就被加入到操作系统中,在这个环境下;你可以从内存中取出这个变量的值;但是我们系统的内存是有限的,不可能把所有的文件信息、位置存到内存中;我们仅仅只把一些系统关键信息、常用到的一些东西存进内存。

做个简单的示范

假设我在当前环境设置一个变量a=10;再开启一个子进程是就访问不了这个变量a了;

但是把它加入到内存后,在子进程中同样可以访问到这个变量

###没加入环境变量
(base) [zpliu@mn02 cdHit]$ a=10
(base) [zpliu@mn02 cdHit]$ bash   ##开启子进程
(base) [zpliu@mn02 cdHit]$ echo $a
#值为空

###加入环境变量中
(base) [zpliu@mn02 cdHit]$ export a=10  ##加入环境变量
(base) [zpliu@mn02 cdHit]$ bash    ##进入子进程
(base) [zpliu@mn02 cdHit]$ echo $a
10

安装MiniConda

下载安装包后,正常情况一路点确定就行,并且会下载一些包用于MiniConda的初始化;

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

安装完成后脚本会自动在~/.bashrc文件中添加一些配置信息

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/public/home/lqiao/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/public/home/lqiao/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/public/home/lqiao/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/public/home/lqiao/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

接下来只需要重新加载一下配置文件就可以使用conda

##重新加载bashrc文件
source  ~/.bashrc

添加清华镜像源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/  
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/  
conda config --set show_channel_urls yes  
##添加bioconda源
# bioconda
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes

Conda的正确使用姿势

每个软件的依赖项不一样,因此在使用的时候,尽量给每个软件创建一个单独的环境;保证软件能够正常的运行。

下面以安装计算遗传复杂度软件xlcpr为例,xlcpr是基于python3的,因此安装是就需要制定python的版本

1.创建xlcpr环境

环境名可以和软件名字一样方便回忆,我这里就取xcplr了

conda create -n  xpclr python=3.8.3

2.安装依赖

一般软件对应的文档会有命令的

  • -n指定对应的环境

conda activate xcplr ##进入环境
conda install xpclr -c bioconda -y

##或者不进入环境就安装包
conda install xpclr -c bioconda -y -n xpclr  ##-n就是指定环境用的

安装完成后在当前环境变量就会有xcplr这个可执行脚本了

xcplr -h

3.退出环境

conda deactivate xlcpr

4.删除环境

如果有的软件不用了,也可以直接把对应的整个环境给删除掉

conda remove -n xpclr --all

5.列出环境中已经安装的包

conda list -n xlcpr

conda进阶

接下来这部分主要讲conda的大致实现原理,

conda info  ##查看conda的详细信息

最主要的信息就是

package cache : /public/home/zpliu/miniconda3/pkgs
                          /public/home/zpliu/.conda/pkgs
envs directories : /public/home/zpliu/miniconda3/envs
                          /public/home/zpliu/.conda/envs

每次下载依赖的时候,conda会去检测package cache中是否含有对应版本的包,conda会拷贝一份到对应环境,没有就会下载一份。

再说说envs directories这个变量吧。

【持续更新】错误集锦

  • 安装包错误

    failed with initial frozen solve Retrying with flexible solve.

    解决办法

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

Last updated