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