一键掌控:Shell脚本自动化安装与管理Conda环境的艺术

2024-03-24 12:28

本文主要是介绍一键掌控:Shell脚本自动化安装与管理Conda环境的艺术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面写了个博客《conda:解决多项目开发环境配置的神器!》简单介绍了 Conda 的安装和基本命令,在做开发时经常会使用 Conda 建立多个应用环境,Conda 的命令虽不复杂,但还是有时会弄混,所以就考虑写个脚本,一条指令创建环境。没啥难度,仅仅是方便自己使用而已。该脚本是在 macOS 里写的,没有在 Windows 下测试。

1 创建 Conda 应用环境的主要流程

1.1 检查系统是否安装了 Conda 这个虚拟环境工具

  • 如果安装了,则继续往下面的 1.2
  • 如果没安装,则提醒用户先去安装,具体怎么安装,请参考《conda:解决多项目开发环境配置的神器!》

1.2 检查要建立的环境名称是否存在

  • 如果环境存在,则判断命令行参数里是否指定覆盖环境,如果指定覆盖则去执行覆盖(进入下面的 1.3),否则就提示用户“改名或在命令行参数里设置覆盖选项(override)”
  • 如果环境不存在,直接去创建并激活环境

1.3 以覆盖的方式安装

  • 先检查系统现有的环境是否处于激活(activate)状态,如果是激活状态,则先取消激活(deactivate),再在删除该环境(remove)后,创建 (create)和激活(activate)指定环境
  • 如果指定的环境在系统里没有处于激活状态,则直接删除该环境(remove)后,创建 (create)和激活(activate)指定环境

2 脚本包含的几个功能点(函数)

脚本的功能点,基本都由对应的函数来实现。
注意:函数的返回值,可以在主函数调用此函数后,用$?获得(参考后面完整代码)

2.1 检查是否安装了 Conda

  • 函数名:check_conda_installed
  • 返回值:0表示conda已安装,否则为1(可以根据需要设定,只要非零就可以,下同)
check_conda_installed(){# 尝试执行conda命令conda --version > /dev/null 2>&1
}

2.2 检查环境是否存在

  • 函数名:check_env_exists
  • 返回值:0 存在,1 不存在
check_env_exists(){conda env list | grep -q "^$env_name\s"
}

2.3 当环境存在时,判断 override 参数

    if [ "$override" = "override" ]; then # 是否覆盖override_envelseecho "环境 $env_name 已存在!解决方法:"echo " 1. 请改名后再安装;"echo " 2. 或者使用下面的命令覆盖安装:"echo "    source installenv.sh $env_name override"fi

2.4 当环境存在时,检查环境是否在激活状态

  • 函数名:check_env_activated
  • 返回值:0 表示激活,1 表示未激活
  • 代码简要说明:
    $CONDA_DEFAULT_ENV 为 Conda 变量,值为当前激活的环境的名称;当 $CONDA_DEFAULT_ENV 和 $env_name 的值相同时,表示指定的环境在激活状态。
check_env_activated(){if [[ -n "$CONDA_DEFAULT_ENV" ]]; thenif [[ "$CONDA_DEFAULT_ENV" = "$env_name" ]]; thenreturn 0 # 环境已激活elsereturn 1 # 环境未激活fielsereturn 1 # 环境未激活fi
}

2.5 此脚本用到的 Conda 命令参考:

conda --version # 获取 Conda 版本,可以根据此命令的返回值判断 Conda 是否安装
conda env list # 列举 Conda 安装了哪些环境
conda create -n $env_name [python=$python_version] -y # 创建环境,此例指定要安装python及版本,可选
conda activate $env_name # 激活环境
conda deactivate # 将当前环境设置为非激活状态
conda remove --name $env_name --all -y # 删除环境

3 脚本内容

此脚是为了在开发时减少配置 Conda 开发环境的时间,并不是作为通用工具来开发的,所以脚本并没有考虑健壮性,最好只用来做测试,避免造成不可预见的损失。您可以根据需要在此脚本基础上进行完善。

下面是完整代码

#!/bin/bash
# 此脚本使用 Conda 安装环境#用法:
# ./installenv.sh [env_name] [override]
# 上面的两个参数:
#     env_name 为环境名,必须要有,且必须是第一个参数
#     override 为是否覆盖,可选,默认为 "no",需要覆盖必须为 "override"字符串env_name=$1 # 环境名
override=$2 # 是否覆盖# 入口函数,用来安装环境
main() {if [ -z "$env_name" ]; thenecho ""echo "!!! 请输入变量名"echo "用法: "echo "source installenv.sh [env_name] [override]"echo "#     env_name 为环境名,必须要有,且必须是第一个参数"echo "#     override 为是否覆盖,可选,默认为 \"no\",需要覆盖必须为 \"override\"字符串"echo ""return 1fiif [ -z "$override" ]; thenoverride="no"ficheck_conda_installed # 检查 Conda 是否安装if [ $? -ne 0 ]; then # Conda  未安装echo "没有安装 Conda,请安装!"return 1ficheck_env_exists # 检查环境是否存在if [ $? -ne 0 ]; then # 指定的环境不存在conda create -n $env_name python=3.9.12 -y # 创建环境conda activate $env_name # 激活环境return 0fiif [ "$override" = "override" ]; then # 是否覆盖override_envelseecho "环境 $env_name 已存在!解决方法:"echo " 1. 请改名后再安装;"echo " 2. 或者使用下面的命令覆盖安装:"echo "    source installenv.sh $env_name override"fi
}# 检查conda是否安装
# 返回值为0表示conda已安装,否则为1
check_conda_installed(){# 尝试执行conda命令conda --version > /dev/null 2>&1
}# 检查环境是否存在
# 返回值:0 存在,1 不存在
check_env_exists(){conda env list | grep -q "^$env_name\s"
}# 覆盖环境
override_env(){check_env_activatedif [ $? -eq 0 ]; then # 环境已激活conda deactivateficonda remove --name $env_name --all -y # 删除环境conda create -n $env_name python=3.9.12 -y # 创建环境conda activate $env_name # 激活环境
}# 检查环境是否激活
# 返回值为0表示激活,为1表示未激活
check_env_activated(){if [[ -n "$CONDA_DEFAULT_ENV" ]]; thenif [[ "$CONDA_DEFAULT_ENV" = "$env_name" ]]; thenreturn 0 # 环境已激活elsereturn 1 # 环境未激活fielsereturn 1 # 环境未激活fi
}# 安装指定环境
main # 安装指定环境

4 使用方法

在执行此脚本时,需要在Shell(终端)里以source(或者 .)的方式来运行,否则会出错,具体原因看下面“通义灵码”的解释

在 Shell 脚本中直接使用 conda 命令有时可能无法访问到 Conda 的环境变量和命令,这是因为 Conda 通过修改shell的环境变量(特别是 PATH 变量)来切换不同的环境。当你在一个新的 Shell 会话中直接运行 conda 命令时,如果该 Shell 会话没有经过 Conda 的初始化,就可能找不到 Conda 命令。

看得有点晕吧?没关系,说人话:当你需要在脚本中执行 conda 命令以管理环境或安装软件包时,一种常见的做法是通过 source 命令(在Bash中也可以写作.)来执行 conda 的初始化脚本,确保conda的环境变量设置正确。再直观一点,只要按下面的写法执行就没问题了:

source ./installenv.sh [env_name] [override]

5 题外话

最近编码一直使用“通义灵码”,那个代码联想功能简直就是逆天了,基本上你想到的没想到的代码他都给你联想了,这样写代码效率简直爆棚,语法错误和 bug,也非常少了。
我让她简单给我分析一下代码,她说了下面的话,由于太佩服了,所以就作为题外话,截个图分享出来:
在这里插入图片描述
看了上面通义灵码的代码分析,你能忍住不安装一个 AI编码助手 插件吗?这种插件很多,可以根据需要选择,建议还是试试吧!😃

这篇关于一键掌控:Shell脚本自动化安装与管理Conda环境的艺术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841598

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提