跳转至

conda

conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换,conda支持python、R、 ruby、 lua、 scala、 java、 javaScript、 C/ C++、 fortran 等多种语言,还支持大部分生信和python科学常用包的安装。

conda安装

miniconda和anaconda都提供了conda,两者的区别在于anaconda打包了很多numpy、scipy、pandas这些科学库,而后者没有。

平台上安装了一些版本的anaconda,可以通过module av查看安装的版本,并通过module load加载。当然也可以选择安装conda到自己的家目录下,这样更有利于后期conda版本的更新。导入平台现有的conda,还是安装conda到自己的家目录,二者取其一,下面是miniconda的安装过程。

# 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的包

例子:conda安装tensorflow及作业提交

conda安装tensorflow

创建一个python环境,并在虚拟环境中安装tensorflow 2.16.1版本库;

# 创建时可以指定Python版本,不指定的话会使用默认的版本(miniconda自带的Python版本);
conda create -n TensorFlow-2.16.1 -y

# 进入上一步创建好的环境;
source activate TensorFlow-2.16.1

# 安装相应的库;
conda install tensorflow=2.16.1 # 根据自己的需要安装相应的库;

# 安装pip并使用pip安装python库;
conda install pip     # 环境中需要先安装pip
pip install numpy     # 根据自己的需要安装相应的库

# 退出当前的虚拟环境;
conda deactivate

作业提交

准备一个TensorFlow输入文件,假如是mnist.py。
短时间(几分钟)提交作业
在10分钟内提交作业这种,可直接在管理节点执行

module load anaconda3 #如果已经进入到base环境,可以不用操作此步骤
source activate TensorFlow-2.16.1
python3 mnist.py

几小时内,不退出终端,使用salloc申请计算节点提交作业

# salloc申请节点,-N申请的计算节点数目;-n申请的任务核数;-p申请的作业队列;-w申请的计算节点名称。
salloc -N 1 -n 4 -p public -w node01

# ssh进入申请的node01节点
ssh node01

# 加载并激活TensorFlow环境
module load anaconda3 #如果已经进入到base环境,可以不用操作此步骤
source activate TensorFlow-2.16.1

# 执行计算命令
python3 mnist.py

需退出终端,或者长时间运行,使用sbatch后台提交作业
准备一个Slurm作业提交脚本mnist.slurm

mnist.slurm
#!/bin/bash
# Job submission script for SLURM:
# Usage: sbatch <this_script>
##############脚本第一部分,声明SLURM作业管理系统的请求资源参数#####################
#SBATCH -p public
#SBATCH -J mnist
#SBATCH -o mnist.o%j
#SBATCH -N 1
#SBATCH --ntasks-per-node=4
#SBATCH -t 1024:00:00
########################请求资源参数的解释###################################
#    -J: 作业名称
#    -o: 标准输出stdout
#    -e: 标准错误stderr,不写-e,标准输出stdout和标准错误stderr合并到.ojobid文件中
#    -N: 请求的节点数目
#    -n: 请求的总核数,如果-N后为1,等同于--ntasks-per-node
#    -t: 时间限制
#    -p: 申请的分区
#    -w: 后面跟请求的指定节点名称
#############################################################################

#################脚本第二部分,定义要运行作业软件的环境变量#######################
# go to work dir
cd $SLURM_SUBMIT_DIR

# 加载anacond3并激活TensorFlow环境
module load anaconda3
source activate TensorFlow-2.16.1

########################脚本第三部分,运行作业的命令############################

echo "Starting TensorFlow run at" `date`

# The program we want to execute,根据自己的作业,主要修改的也是下面这一行
python3 mnist.py

echo "Finished TensorFlow run at" `date`
使用sbatch mnist.slurm提交作业。

本文阅读量  次
本站总访问量  次