CostPrediction/scripts/build_linux.sh

87 lines
2.1 KiB
Bash

#!/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"