增加 Linux 打包脚本
This commit is contained in:
parent
ed91df6607
commit
e0249d65d8
87
scripts/build_linux.sh
Normal file
87
scripts/build_linux.sh
Normal 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"
|
||||
@ -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
36
scripts/setup_linux.sh
Normal 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
|
||||
Loading…
Reference in New Issue
Block a user