conda使用
conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换,conda 支持 python、R、 ruby、 lua、 scala、 java、 javaScript、 C/ C++、 fortran 等多种语言,还支持大部分生信软件的安装。
conda 安装
miniconda 和 anaconda 都提供了 conda,两者的区别在于 anaconda 打包了很多 numpy、scipy、pandas 这些科学库,而后者没有。
平台上安装了一些版本的 anaconda,可以通过 module avail
查看安装的版本,并通过 module load
加载。当然也可以选择安装 conda 到自己的家目录下,这样更有利于后期 conda 版本的更新。导入平台现有的 conda,还是安装 conda 到自己的家目录,二者取其一,下面是 conda 的安装过程。
# 1. 获得最新的miniconda安装包;
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 2. 安装到自己的HOME目录下software/miniconda3中,这个目录在安装前不能存在,否则会报错;
sh Miniconda3-latest-Linux-x86_64.sh -b -p ${HOME}/software/miniconda3
# 3. 安装成功后可以删除安装包,节省存储空间
rm -f Miniconda3-latest-Linux-x86_64.sh
# 4. 将环境变量写入~/.bashrc文件中;(下面这句话,添加到~/.bashrc文件中)
export PATH=${HOME}/software/miniconda3/bin:$PATH
# 5. 退出重新登录或者执行以下命令,即可导入 conda 环境
source ~/.bashrc
# 6. 检查是否安装成功
conda --version
conda 使用
conda 环境的创建、切换和删除
conda 作为一个环境管理工具,它允许用户轻松创建、保存、加载不同的环境,解决不同项目间依赖包版本冲突的问题,因此它最基本的几个功能就是虚拟环境的创建、虚拟环境的切换、虚拟环境的查看和虚拟环境的删除。
conda info -e 查看 conda 环境
通过 conda info -e
指令可以查看 conda 管理的虚拟环境列表。
在安装完 conda 后,默认会生成一个名为 base 的根环境。建议不要在根环境下安装软件,而是创建 conda 环境,并在创建的环境中安装软件包。
conda create -n env_name 创建 conda 环境
通过conda create -n env_name
指令创建 conda 环境。env_name
为需要创建的 conda 环境名,需要自行指定。
source activate env_name 切换 conda 环境
通过 source activate env_name
指令切换至指定的 conda 环境中。进入环境后,就可以在该环境中使用 conda 安装管理软件,或使用环境中的软件。
注意
conda activate env_name
指令也可以用来切换环境,但前提是需要在安装完 conda 后执行 conda init
conda deactivate 退出 conda 环境
通过 conda deactivate
退出当前 conda 环境。
conda remove -n env_name --all 删除 conda 环境
通过 conda remove -n env_name --all
指令删除名为 env_name 的 conda 环境,如果执行指令时正在该环境中,则无法顺利执行,需要退出后才能执行成功。
conda 查找、安装和删除软件包
之前已经介绍了如何创建、查看、切换和删除 conda 环境。在创建完一个 conda 环境时,里面是没有安装任何软件包的,需要切换到对应的环境中安装。
conda list 查看当前环境中的软件
通过 conda list
查看当前环境中,通过 conda 安装的软件。也可以执行 conda list -n env_name
查看指定 conda 环境中安装的软件。
conda search 查找软件包
通过 conda search pkg_name
指令查看 conda 提供的软件包,在没有配置 channel 的情况下,会从默认的 channel 中查找软件,平时用的比较多的 channel 是 conda-forge,可以通过 conda search pkg_name -c conda-forge
到该 channel 中查找软件包。
还可以直接打开 anaconda.org 网站,直接输入软件包的名字查找软件包,查到后点击进入查看安装指令。
conda install pkg_name 安装软件包
通过 conda install pkg_name
指令查看 conda 提供的软件包,在没有配置 channel 的情况下,会从默认的 channel 中安装软件。
conda update pkg_name 更新软件包
执行conda update pkg_name
会将安装包更新到可更新到的最新版本,或者执行conda update pkg_name==version
指定版本更新。
conda remove pkg_name 卸载指定的安装包
通过 conda remove pkg_name
指令卸载指定的安装包。
命令总结
conda info -e # 查看可用的 conda 环境
conda create -n env_name # 创建名为 env_name 的环境
conda create -n env_name python==3.11.6 # 创建名为 env_name 的环境,并安装 python 3.11.6
source activate env_name # 切换至名为 env_name 的环境
conda activate env_name # 切换至名 env_name 的环境
conda deactivate # 退出当前环境
conda remove -n env_name --all # 删除名为 env_name 的环境
conda list # 查看当前环境已安装的 conda 包
conda list -n env_name # 查看 env_name 环境已安装的 conda 包
conda search pkg_name # 搜索 pkg_name 名的软件
conda install pkg_name # 安装 pkg_name 名的软件
conda update pkg_name # 更新当前环境 pkg_name 包
conda remove pkg_name # 卸载名为 pkg_name 的包
例子
Python 环境
创建一个 python 环境,并在虚拟环境中安装 tensorflow gpu 1.14.0 版本库;
# 创建时可以指定Python版本,不指定的话会使用默认的版本(miniconda自带的Python版本);
conda create -n TensorFlow-1.14.0 -y
# 进入上一步创建好的环境;
source activate TensorFlow-1.14.0
# 安装相应的库;
conda install tensorflow-gpu=1.14.0 # 根据自己的需要安装相应的库;
# 安装pip并使用pip安装 python 库;
conda install pip # 环境中需要先安装pip
pip install numpy # 根据自己的需要安装相应的库
# 退出当前的虚拟环境;
conda deactivate
R 语言环境
R是用于统计分析、绘图的语言和操作环境。R 是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
# 1. 创建虚拟环境,并在创建的时候指定安装R 4.3版本;
conda create -n myEnvR r=4.3 -y
# 进入上一步创建好的虚拟环境;
source activate myEnvR
# 安装R语言库,比如stringi
conda install r-stringi
# 安装完后就可以用R语言环境了,如果要退出当前环境则执行以下指令;
conda deactivate
Perl 语言环境
用 conda 安装和管理perl语言环境。
# 创建虚拟环境;
conda create -n myEnv
# 进入创建好的虚拟环境;
source activate myEnv
# 安装perl和cpan
conda install -c bioconda perl perl-app-cpanminus
# 安装perl相关库
cpanm My::Module
生信软件
bioconda 是一个 conda 中专门用来提供生信软件的 channel,提供有超过7000个的生信软件,以下是通过conda安装生信软件的例子
# 创建虚拟环境
conda create -n anvio
# 切换到创建好的环境
source activate anvio
# 安装anvio
conda install -c bioconda anvio -y
更多关于生信软件安装的例子,可以查看链接
Channel 相关
常见问题
安装卡顿并报错
Collecting package metadata (repodata.json): - WARNING conda.models.version:get_matcher(538): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.7.1.*, but conda is ignoring the .* and treating it as 1.7.1
解决方法,可能是 conda 源出了问题,恢复默认源即可:
安装卡顿
安装 conda 软件时卡在:
Collecting package metadata (current_repodata.json): done Solving environment:
解决方式为在 base 根环境中尝试执行:
安装速度慢
更换国内源,如使用北京大学镜像站的源