我来帮你写一个自动安装依赖包的脚本,以下提供几种常见场景的脚本:

Python 项目依赖安装脚本
#!/bin/bash
# install_python_deps.sh
# 设置错误时退出
set -e
echo "====== Python 依赖安装脚本 ======"
# 检查 Python 是否安装
if ! command -v python3 &> /dev/null; then
echo "错误: 未找到 Python3"
exit 1
fi
# 检查 pip 是否安装
if ! command -v pip3 &> /dev/null; then
echo "安装 pip..."
python3 -m ensurepip --upgrade
fi
# 检查虚拟环境
if [ ! -d "venv" ]; then
echo "创建虚拟环境..."
python3 -m venv venv
fi
# 激活虚拟环境
source venv/bin/activate
# 升级 pip
echo "升级 pip..."
pip install --upgrade pip
# 安装依赖
if [ -f "requirements.txt" ]; then
echo "从 requirements.txt 安装依赖..."
pip install -r requirements.txt
else
echo "未找到 requirements.txt,安装默认包..."
pip install numpy pandas requests flask
fi
# 安装开发依赖(可选)
if [ -f "requirements-dev.txt" ]; then
echo "安装开发依赖..."
pip install -r requirements-dev.txt
fi
echo "====== 依赖安装完成 ======"
Node.js (npm) 项目依赖安装脚本
#!/bin/bash
# install_node_deps.sh
set -e
echo "====== Node.js 依赖安装脚本 ======"
# 检查 Node.js 是否安装
if ! command -v node &> /dev/null; then
echo "错误: 未找到 Node.js"
exit 1
fi
# 检查 npm 是否安装
if ! command -v npm &> /dev/null; then
echo "错误: 未找到 npm"
exit 1
fi
# 显示版本信息
echo "Node.js 版本: $(node --version)"
echo "npm 版本: $(npm --version)"
# 检查 package.json 是否存在
if [ ! -f "package.json" ]; then
echo "初始化 npm 项目..."
npm init -y
fi
# 安装依赖
echo "安装生产依赖..."
npm install --production
# 安装开发依赖(如果需要)
if [ -f "package.json" ]; then
echo "安装开发依赖..."
npm install --dev
fi
# 清理 npm 缓存(可选)
# npm cache clean --force
echo "====== 依赖安装完成 ======"
通用依赖安装脚本(支持多语言)
#!/bin/bash
# auto_install_deps.sh
set -e
# 检测项目类型
detect_project_type() {
if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
echo "python"
elif [ -f "package.json" ]; then
echo "node"
elif [ -f "Gemfile" ]; then
echo "ruby"
elif [ -f "composer.json" ]; then
echo "php"
elif [ -f "go.mod" ]; then
echo "go"
else
echo "unknown"
fi
}
# 安装 Python 依赖
install_python() {
echo "检测到 Python 项目..."
if [ ! -d "venv" ]; then
python3 -m venv venv
fi
source venv/bin/activate
pip install --upgrade pip
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
fi
if [ -f "pyproject.toml" ]; then
pip install -e .
fi
}
# 安装 Node.js 依赖
install_node() {
echo "检测到 Node.js 项目..."
npm install
if [ -f "yarn.lock" ]; then
yarn install
elif [ -f "pnpm-lock.yaml" ]; then
pnpm install
fi
}
# 安装 Ruby 依赖
install_ruby() {
echo "检测到 Ruby 项目..."
bundle install
}
# 安装 PHP 依赖
install_php() {
echo "检测到 PHP 项目..."
composer install
}
# 安装 Go 依赖
install_go() {
echo "检测到 Go 项目..."
go mod download
go mod tidy
}
# 主函数
main() {
echo "====== 自动依赖安装工具 ======"
# 检查操作系统
OS=$(uname -s)
echo "操作系统: $OS"
# 检测项目类型
PROJECT_TYPE=$(detect_project_type)
echo "项目类型: $PROJECT_TYPE"
# 根据项目类型安装依赖
case $PROJECT_TYPE in
python)
install_python
;;
node)
install_node
;;
ruby)
install_ruby
;;
php)
install_php
;;
go)
install_go
;;
*)
echo "无法识别的项目类型"
exit 1
;;
esac
echo "====== 依赖安装完成 ======"
}
# 执行主函数
main
带参数的高级版本
#!/bin/bash
# advanced_install.sh
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 帮助信息
show_help() {
echo "用法: ./install.sh [选项]"
echo "选项:"
echo " -h, --help 显示帮助信息"
echo " -p, --python 安装 Python 依赖"
echo " -n, --node 安装 Node.js 依赖"
echo " -a, --all 安装所有依赖"
echo " -d, --dev 安装开发依赖"
}
# 检查环境
check_environment() {
if [ ! -f "package.json" ] && [ ! -f "requirements.txt" ]; then
log_error "未找到 package.json 或 requirements.txt"
exit 1
fi
}
# 安装 Python 依赖
install_python_deps() {
log_info "安装 Python 依赖..."
# 创建虚拟环境
if [ ! -d "venv" ]; then
python3 -m venv venv
log_info "虚拟环境已创建"
fi
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
if [ "$DEV_MODE" = true ] && [ -f "requirements-dev.txt" ]; then
pip install -r requirements-dev.txt
fi
fi
log_info "Python 依赖安装完成"
}
# 安装 Node.js 依赖
install_node_deps() {
log_info "安装 Node.js 依赖..."
# 安装依赖
npm install
# 开发模式
if [ "$DEV_MODE" = true ]; then
npm install --dev
fi
log_info "Node.js 依赖安装完成"
}
# 主执行流程
main() {
DEV_MODE=false
INSTALL_PYTHON=false
INSTALL_NODE=false
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
show_help
exit 0
;;
-p|--python)
INSTALL_PYTHON=true
shift
;;
-n|--node)
INSTALL_NODE=true
shift
;;
-a|--all)
INSTALL_PYTHON=true
INSTALL_NODE=true
shift
;;
-d|--dev)
DEV_MODE=true
shift
;;
*)
log_error "未知选项: $1"
show_help
exit 1
;;
esac
done
# 检查环境
check_environment
# 安装依赖
if [ "$INSTALL_PYTHON" = true ] && [ -f "requirements.txt" ]; then
install_python_deps
fi
if [ "$INSTALL_NODE" = true ] && [ -f "package.json" ]; then
install_node_deps
fi
# 如果没有指定安装类型,自动检测
if [ "$INSTALL_PYTHON" = false ] && [ "$INSTALL_NODE" = false ]; then
log_warn "未指定安装类型,自动检测..."
if [ -f "requirements.txt" ]; then
install_python_deps
fi
if [ -f "package.json" ]; then
install_node_deps
fi
fi
log_info "所有依赖安装完成!"
}
# 执行主函数
main "$@"
使用说明
-
创建脚本文件:
# 创建脚本 touch install_deps.sh # 编辑脚本(将上述代码复制进去) # 赋予执行权限 chmod +x install_deps.sh
-
执行脚本:
# 基本用法 ./install_deps.sh
带参数
./install_deps.sh -a -d # 安装所有依赖,包括开发依赖
3. **示例使用场景**:
```bash
# Python 项目
pip freeze > requirements.txt # 生成依赖文件
./install_deps.sh # 自动安装
# Node.js 项目
npm init -y # 初始化
./install_deps.sh # 自动安装
这些脚本会根据项目的配置文件自动检测并安装所需的依赖包,可以满足大多数项目的需求,根据需要选择或修改适合你的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播