87 lines
2.1 KiB
Bash
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" |