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
#!/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
提交作业。
本文阅读量 次
本站总访问量 次