增加 Linux 打包脚本

This commit is contained in:
Tian jianyong 2024-11-28 15:59:16 +08:00
parent ed91df6607
commit e0249d65d8
3 changed files with 130 additions and 0 deletions

87
scripts/build_linux.sh Normal file
View File

@ -0,0 +1,87 @@
#!/bin/bash
# 确保脚本在错误时退出
set -e
echo "Starting packaging for Linux..."
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖
echo "Installing dependencies..."
pip install -e .
# 构建前端
echo "Building frontend..."
cd frontend
npm install
npm run build
# 把构建好的文件直接复制到 frontend 目录
cp -r dist/* .
rm -rf dist
cd ..
# 创建必要的目录
mkdir -p logs data models
# 使用 PyInstaller 打包
echo "Packaging with PyInstaller..."
pyinstaller --clean \
--add-data "src/loitering_munition_data.sql:data" \
--add-data "src/rocket_artillery_data.sql:data" \
--add-data "src/manufacturer_data.sql:data" \
--add-data "src/schema.sql:data" \
--add-data "config.py:." \
--add-data "src:src" \
--add-data "frontend:frontend" \
--add-data "logs:logs" \
--add-data "data:data" \
--add-data "models:models" \
--collect-all "xgboost" \
--collect-all "lightgbm" \
--collect-all "torch" \
--collect-all "sklearn" \
--collect-all "numpy" \
--collect-all "pandas" \
--collect-all "sqlalchemy" \
--collect-all "pymysql" \
--collect-all "cryptography" \
--collect-all "flask" \
--collect-all "flask_cors" \
--hidden-import "xgboost.testing" \
--hidden-import "torch.utils.tensorboard" \
--hidden-import "pytest" \
run.py
# 创建启动脚本
echo "Creating start script..."
cat > src/start.sh << 'EOF'
#!/bin/bash
export FLASK_DEBUG=false
export MYSQL_HOST=localhost
export MYSQL_USER=root
export MYSQL_PASSWORD=123456
export MYSQL_DB=equipment_cost_db
echo "Starting Cost Prediction System..."
./run
xdg-open http://localhost:5001
EOF
# 复制启动脚本
cp src/start.sh dist/run/
chmod +x dist/run/start.sh
# 创建发布包
echo "Creating release package..."
version=$(grep "version" pyproject.toml | cut -d'"' -f2)
mkdir -p dist/release
cp -r dist/run/* dist/release/
# 创建 tar.gz 包
cd dist
tar czf "cost-prediction-${version}-linux.tar.gz" release/
cd ..
echo "Package completed: dist/cost-prediction-${version}-linux.tar.gz"

View File

@ -1,5 +1,12 @@
#!/bin/bash
# 此脚本用于设置 Python 开发环境
# 主要用于:
# 1. 开发环境初始化
# 2. 确保正确的 Python 版本
# 3. 安装项目依赖
# 注意:在运行此脚本前,请先运行 setup_linux.sh 安装系统依赖
# 检查 pyenv 是否安装
if ! command -v pyenv &> /dev/null; then
echo "pyenv not found. Installing..."

36
scripts/setup_linux.sh Normal file
View File

@ -0,0 +1,36 @@
#!/bin/bash
# 此脚本用于安装 Linux 系统级依赖
# 主要用于:
# 1. 打包环境准备
# 2. 新系统的初始化
# 3. CI/CD 环境设置
# 更新包列表
sudo apt update
# 安装系统依赖
echo "Installing system dependencies..."
sudo apt install -y \
python3.11 \ # Python 3.11 解释器
python3.11-venv \ # Python 虚拟环境支持
python3-pip \ # Python 包管理器
build-essential \ # 编译工具
python3.11-dev \ # Python 开发库
nodejs \ # Node.js用于前端构建
npm \ # Node.js 包管理器
binutils \ # 二进制工具(用于 PyInstaller
tar \ # 打包工具
gzip \ # 压缩工具
mysql-client \ # MySQL 客户端
libmysqlclient-dev \ # MySQL 开发库
gcc \ # C 编译器
g++ \ # C++ 编译器
libssl-dev \ # SSL 支持
xdg-utils # 用于打开浏览器
# 验证安装
echo "Verifying installations..."
python3.11 --version
node --version
npm --version