提升开发效率:Bash 脚本自动化环境搭建与依赖安装

embedded/2025/1/21 19:50:05/

自动化环境搭建脚本:安装 Miniconda、创建虚拟环境并配置前端依赖

在开发工作中,搭建开发环境往往是一个繁琐且重复的过程,尤其是在多次迁移或协作开发时。为了提高效率并避免每次手动配置环境,自动化的脚本能够极大地简化环境搭建流程。本文将详细介绍如何通过一个 Bash 脚本来自动化安装 Miniconda、创建 Python 虚拟环境、配置国内的 pip 镜像源以及安装前端依赖。

脚本概览

下面是完整的 Bash 脚本,它实现了以下功能:

  • 检查是否已安装 Conda,若未安装则自动安装 Miniconda。
  • 初始化 Conda 环境并创建一个新的虚拟环境(可以根据需要自定义环境名称)。
  • 修改 pip 镜像源为国内镜像(如清华镜像)以加速包下载。
  • 安装 Python 依赖(通过 requirements.txt 文件)。
  • 检查并通过 Conda 安装 Node.js 和 npm。
  • 安装前端的 Node.js 依赖。

脚本内容

bash">#!/bin/bash# 检查是否已安装conda
if ! command -v conda &> /dev/null
thenecho "Conda not found, installing Miniconda..."# 下载并安装 MinicondaMINICONDA_INSTALLER="Miniconda3-latest-Linux-x86_64.sh"# 下载 Miniconda 安装脚本wget https://repo.anaconda.com/miniconda/$MINICONDA_INSTALLER# 运行安装脚本bash $MINICONDA_INSTALLER -b -p $HOME/miniconda3# 初始化 Conda$HOME/miniconda3/bin/conda init# 激活 Condasource $HOME/miniconda3/bin/activate# 删除安装脚本rm $MINICONDA_INSTALLERecho "Miniconda installation complete."
elseecho "Conda is already installed."
fi# 初始化 Conda 环境(如果没有初始化过的话)
echo "Initializing Conda..."
source $HOME/miniconda3/etc/profile.d/conda.sh# 检查虚拟环境是否已存在
if conda env list | grep -q "my_environment"; thenecho "Conda environment 'my_environment' already exists. Activating it..."conda activate my_environment
elseecho "Conda environment 'my_environment' not found. Creating it..."conda create -n my_environment python=3.10 -yconda activate my_environment
fi# 输出环境信息
echo "Conda environment 'my_environment' is activated."# 永久修改 pip 镜像源为清华源
echo "Modifying pip source to Tsinghua mirror..."
mkdir -p ~/.config/pip
echo -e "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple" > ~/.config/pip/pip.conf# 安装 Python 依赖
if [ -f "requirements.txt" ]; thenecho "Installing Python dependencies from requirements.txt..."pip install -r requirements.txt
elseecho "requirements.txt not found!"
fi# 检查 Node.js 和 npm 是否安装,如果未安装则通过 Conda 安装【所有的机器都是不给sudo权限的】
if ! command -v node &> /dev/null
thenecho "Node.js not found, installing Node.js and npm using Conda..."# 使用 conda 安装 Node.js 和 npmconda install -c conda-forge nodejs -yecho "Node.js and npm installation complete via Conda."
elseecho "Node.js and npm are already installed."
fi# 前端安装
if [ -d "frontend" ]; thenecho "Entering the 'frontend' directory and installing Node.js dependencies..."cd frontendnpm installcd ..
elseecho "'frontend' directory not found!"
fiecho "Setup complete."

脚本实现原理与步骤

1. 检查并安装 Miniconda

Miniconda 是 Conda 的轻量级版本,适用于需要定制化安装 Python 环境的用户。它提供了最小的 Conda 安装包,允许用户灵活地安装和管理 Python 包和虚拟环境。

bash">if ! command -v conda &> /dev/null
thenecho "Conda not found, installing Miniconda..."# 下载并安装 MinicondaMINICONDA_INSTALLER="Miniconda3-latest-Linux-x86_64.sh"# 下载 Miniconda 安装脚本wget https://repo.anaconda.com/miniconda/$MINICONDA_INSTALLER# 运行安装脚本bash $MINICONDA_INSTALLER -b -p $HOME/miniconda3# 初始化 Conda$HOME/miniconda3/bin/conda init# 激活 Condasource $HOME/miniconda3/bin/activate# 删除安装脚本rm $MINICONDA_INSTALLERecho "Miniconda installation complete."
elseecho "Conda is already installed."
fi

首先检查 Conda 是否已安装。如果未安装,则下载并安装 Miniconda,并运行初始化命令。激活 Conda 后,删除安装脚本以保持清洁。

①. if ! command -v conda &> /dev/null

这一行用于检查系统中是否已经安装了 conda 命令。

  • command -v conda:

    • command 是一个用来执行并检查命令的 Bash 内建命令。
    • -v 选项会检查指定的命令(在这个例子中是 conda)是否存在,并返回该命令的路径(如果存在的话)。如果 conda 被安装并且能在系统路径中找到,command -v conda 会输出 conda 命令的路径。例如,输出可能是 /usr/bin/conda
    • 如果 conda 没有安装,command -v conda 将不会输出任何内容。
  • !:

    • 这是一个逻辑“非”操作符。它用于反转 command -v conda 命令的退出状态。如果 conda 安装了,command -v conda 会成功返回一个路径,退出状态为 0(表示成功),! 会将其反转为 false,条件不成立。
    • 如果 conda 没有安装,command -v conda 将失败,退出状态为 1,! 会反转为 true,从而进入 if 块执行后续操作。
  • &> /dev/null:

    • 这一部分用于将 command -v conda 命令的输出(包括标准输出和标准错误输出)丢弃。&> 是 Bash 的语法,用于将输出重定向到一个文件,/dev/null 是一个特殊的设备文件,任何写入它的数据都会被丢弃。这样做的目的是避免在终端上输出 conda 命令的路径或错误信息,只关注命令的退出状态。

总结:这一行的逻辑是检查系统中是否已经安装了 conda,如果没有安装,接下来的代码会自动执行 Miniconda 的安装过程。如果已经安装 conda,则跳过安装步骤。

②. wget 下载脚本

bash">wget https://repo.anaconda.com/miniconda/$MINICONDA_INSTALLER
  • wget:
    • wget 是一个常用的命令行工具,用于从网络上下载文件。在这里,它被用来从 Miniconda 的官方仓库下载安装脚本。
    • https://repo.anaconda.com/miniconda/$MINICONDA_INSTALLER 是下载链接。$MINICONDA_INSTALLER 是一个变量,包含了 Miniconda 安装脚本的文件名。这个变量被设置为 Miniconda3-latest-Linux-x86_64.sh,这是适用于 64 位 Linux 系统的最新 Miniconda 安装脚本。
    • 通过 wget 命令,脚本将被下载到当前目录。

总结:这行代码通过 wget 从网络上下载 Miniconda 安装脚本,确保系统能够自动获取并安装 Miniconda。

2. 创建并激活 Conda 虚拟环境

bash"># 初始化 Conda 环境(如果没有初始化过的话)
echo "Initializing Conda..."
source $HOME/miniconda3/etc/profile.d/conda.sh# 检查虚拟环境是否已存在
if conda env list | grep -q "patent_searchengine"; thenecho "Conda environment 'patent_searchengine' already exists. Activating it..."conda activate patent_searchengine
elseecho "Conda environment 'patent_searchengine' not found. Creating it..."conda create -n patent_searchengine python=3.10 -yconda activate patent_searchengine
fi

脚本通过 conda env list 检查名为 my_environment 的虚拟环境是否已存在。如果已存在,则激活该环境;如果不存在,则创建一个新的 Conda 环境并激活它。

3. 永久修改 pip 镜像源

为了提高包下载速度,我们将 pip 的镜像源修改为国内清华镜像源:

bash"># 永久修改 pip 镜像源为清华源echo "Modifying pip source to Tsinghua mirror..."
mkdir -p ~/.config/pip
echo -e "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple" > ~/.config/pip/pip.conf

此步骤通过修改 ~/.config/pip/pip.conf 配置文件,将 pip 的镜像源设置为清华大学的镜像源,从而加速包下载。

①. 创建 pip 配置文件的目录

bash">mkdir -p ~/.config/pip
  • mkdir 是用于创建目录的命令。
  • -p 参数:表示递归创建目录。如果父目录不存在,-p 会确保所有上级目录也被一并创建。
    • 例如:如果路径 ~/.config/pip 中的 .configpip 目录不存在,mkdir -p 会自动依次创建这些目录,而不会报错。

这样做的好处是,即使路径不存在,也不会中断操作流程。

②. 创建或覆盖 pip.conf 配置文件

bash">echo -e "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple" > ~/.config/pip/pip.conf
  • echo 命令:用于输出文本。在这里,echo 将生成的文本内容写入到配置文件中。
  • -e 参数:表示启用转义字符解析,使得特殊字符(如 \n 换行符)被正确解释。
    • 在脚本中,\n 用于在 [global]index-url 之间换行,从而生成格式正确的配置文件:
      [global]
      index-url = https://pypi.tuna.tsinghua.edu.cn/simple
      
    • 如果不使用 -e,文本中的 \n 会被当作普通字符输出,导致配置文件格式错误。

4. 安装 Python 依赖

bash">if [ -f "requirements.txt" ]; thenecho "Installing Python dependencies from requirements.txt..."pip install -r requirements.txt
elseecho "requirements.txt not found!"
fi

脚本检查当前目录是否存在 requirements.txt 文件。如果存在,它将使用 pip 安装文件中列出的 Python 依赖。

5. 安装 Node.js 和 npm

bash">if ! command -v node &> /dev/null
thenecho "Node.js not found, installing Node.js and npm using Conda..."conda install -c conda-forge nodejs -yecho "Node.js and npm installation complete via Conda."
elseecho "Node.js and npm are already installed."
fi

由于在一些机器上可能没有 sudo 权限,我们通过 Conda 来安装 Node.js 和 npm。这样可以避免在没有管理员权限的情况下直接使用 apt 安装。

6. 安装前端依赖

bash">if [ -d "frontend" ]; thenecho "Entering the 'frontend' directory and installing Node.js dependencies..."cd frontendnpm installcd ..
elseecho "'frontend' directory not found!"
fi

最后,脚本检查是否存在名为 frontend 的目录。如果目录存在,进入该目录并运行 npm install 安装前端的依赖。如果目录不存在,脚本会输出提示信息。

总结

本文通过一个 Bash 脚本详细介绍了如何自动化环境搭建的过程,包括:

  • 安装 Miniconda 并初始化 Conda 环境。
  • 配置国内镜像源以加速包下载。
  • 安装 Python 依赖及 Node.js 和 npm。
  • 安装前端依赖。

通过这个自动化脚本,你不仅能够快速搭建 Python 开发环境,还能确保每次环境的搭建都一致并且高效。对于没有管理员权限的用户来说,这种方法尤其有用,因为它通过 Conda 安装依赖,避免了使用 sudo 的需要。

希望这篇文章对你有所帮助,提升了你的开发效率!


http://www.ppmy.cn/embedded/155864.html

相关文章

10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南

在Python开发过程中,调试是一项核心技能。无论是初级开发者还是资深工程师,掌握高效的调试技巧都能显著提升开发效率。本文将介绍10个实用的调试方法,帮助开发者更有效地定位和解决问题。 1、Python内置调试器pdb的应用 Python的内置调试器p…

Java开发提速秘籍:巧用Apache Commons Lang工具库

一、Java 开发效率之困 在当今数字化时代,Java 作为一门广泛应用的编程语言,在各类软件开发项目中占据着举足轻重的地位。无论是大型企业级应用、互联网平台,还是移动应用后端,都能看到 Java 的身影。然而,Java 开发者…

OpenCV imread函数读取图像__实例详解

OpenCV imread函数读取图像__实例详解 本文目录: 零、时光宝盒 一、imread函数定义 二、imread函数支持的文件格式 三、imread函数flags参数详解 (3.1)、Flags-1时,样返回加载的图像(使用alpha通道,否…

npm介绍

npm(Node Package Manager)是 Node.js 的默认包管理工具,用于管理 JavaScript 和 Node.js 项目的依赖关系。它既是一个包管理工具,又是一个在线仓库,开发者可以通过它分享和下载开源的 JavaScript 库和工具。npm 是世界…

C#深度神经网络(TensorFlow.NET)

C#深度神经网络 文章目录 C#深度神经网络前言专业术语讲解模型[Model]向量[Vector]矩阵[Matrix]张量[Tensor]批量大小(Batch Size)迭代次数(Epochs)交叉熵[Cross Entropy] 训练流程数据预处理数据打标签数据转换标准化/归一化选择…

vue3-sfc-loader 加载远程.vue文件(sfc)案例

注意事项 style标签如果增加了lang比如:lang“scss”,需要提供scss-loader的处理器,这个暂时没研究,我的处理方式是将动态模版的css放在了全局打包暂时还没有测试,后面测试了会同步更新 安装vue3-sfc-loader npm inst…

CSS 颜色

所有浏览器都支持的颜色名 所有现代浏览器均支持以下 140 种颜色名称(单击颜色名称或十六进制值,可查看将以该颜色为背景颜色以及不同的文本颜色): 颜色名十六进制颜色值颜色AliceBlue#F0F8FFAntiqueWhite#FAEBD7Aqua#00FFFFAqu…

Node.js卸载超详细步骤(附图文讲解)

Node.js卸载超详细步骤 1、通过控制面板删除node版本2、删除node的安装目录3、查找.npmrc文件是否存在,有就删除。4、查看以下文件是否存在,有就删除5、打开系统设置,检查系统环境变量,将node相关的配置都删掉6、查看是否删除成功…