1. 补充 25+ 个 hidden-import(打包后运行崩溃的根因): plotly/pybaselines/scipy子模块/molmass/openpyxl/pyproj/jinja2/ requests/urllib3/certifi/geopandas/shapely/fiona/simplekml/joblib/ skgstat.DirectionalVariogram/tqdm 等 2. 补充 --add-data 文件(运行时 FileNotFound 的根因): mass_balance_template.html / gasflux.ini / gasflux.ini.example 3. 修复 python 命令兼容性:改为 py -3(适配 Windows Store Python) 4. 修正端口号提示:5000 → 5001(与 gasflux.ini 一致)
105 lines
3.1 KiB
Batchfile
105 lines
3.1 KiB
Batchfile
@echo off
|
|
REM GasFlux Web API - Build executable with PyInstaller
|
|
REM This script builds a standalone executable using Waitress WSGI server
|
|
|
|
echo Building GasFlux Web API executable...
|
|
|
|
REM Check if PyInstaller is installed
|
|
py -3 -c "import PyInstaller" >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo Error: PyInstaller is not installed. Please run:
|
|
echo py -3 -m pip install pyinstaller waitress
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM Check if Waitress is installed
|
|
py -3 -c "import waitress" >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo Error: Waitress is not installed. Please run:
|
|
echo py -3 -m pip install waitress
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM Create dist directory if it doesn't exist
|
|
if not exist "dist" mkdir dist
|
|
|
|
echo Creating executable with PyInstaller...
|
|
|
|
REM Build the executable
|
|
pyinstaller --onefile ^
|
|
--name GasFluxAPI ^
|
|
--hidden-import waitress ^
|
|
--hidden-import flask ^
|
|
--hidden-import werkzeug ^
|
|
--hidden-import yaml ^
|
|
--hidden-import pandas ^
|
|
--hidden-import numpy ^
|
|
--hidden-import flask_cors ^
|
|
--hidden-import psutil ^
|
|
--hidden-import skgstat ^
|
|
--hidden-import skgstat.Variogram ^
|
|
--hidden-import skgstat.OrdinaryKriging ^
|
|
--hidden-import skgstat.DirectionalVariogram ^
|
|
--hidden-import plotly ^
|
|
--hidden-import plotly.graph_objects ^
|
|
--hidden-import plotly.express ^
|
|
--hidden-import plotly.subplots ^
|
|
--hidden-import pybaselines ^
|
|
--hidden-import scipy ^
|
|
--hidden-import scipy.odr ^
|
|
--hidden-import scipy.signal ^
|
|
--hidden-import scipy.stats ^
|
|
--hidden-import scipy.integrate ^
|
|
--hidden-import scipy.optimize ^
|
|
--hidden-import molmass ^
|
|
--hidden-import openpyxl ^
|
|
--hidden-import pyproj ^
|
|
--hidden-import jinja2 ^
|
|
--hidden-import requests ^
|
|
--hidden-import urllib3 ^
|
|
--hidden-import matplotlib ^
|
|
--hidden-import matplotlib.pyplot ^
|
|
--hidden-import matplotlib.backends ^
|
|
--hidden-import matplotlib.backends.backend_agg ^
|
|
--hidden-import matplotlib.figure ^
|
|
--hidden-import matplotlib.axes ^
|
|
--hidden-import matplotlib.lines ^
|
|
--hidden-import matplotlib.patches ^
|
|
--hidden-import matplotlib.text ^
|
|
--hidden-import matplotlib.transforms ^
|
|
--hidden-import tqdm ^
|
|
--hidden-import certifi ^
|
|
--hidden-import charset_normalizer ^
|
|
--hidden-import geopandas ^
|
|
--hidden-import shapely ^
|
|
--hidden-import fiona ^
|
|
--hidden-import simplekml ^
|
|
--hidden-import joblib ^
|
|
--exclude-module tkinter ^
|
|
--add-data "src\gasflux\gasflux_config.yaml;src\gasflux" ^
|
|
--add-data "src\gasflux\templates\mass_balance_template.html;src\gasflux\templates" ^
|
|
--add-data "gasflux.ini;." ^
|
|
--add-data "gasflux.ini.example;." ^
|
|
server_waitress.py
|
|
|
|
if errorlevel 1 (
|
|
echo Error: Failed to build executable
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo.
|
|
echo Build completed successfully!
|
|
echo Executable created: dist\GasFluxAPI.exe
|
|
echo.
|
|
echo To run the server:
|
|
echo GasFluxAPI.exe
|
|
echo.
|
|
echo The server will start on http://localhost:5001
|
|
echo Make sure gasflux.ini is in the same directory as the executable,
|
|
echo or configure paths via environment variables.
|
|
echo.
|
|
pause
|