"""打包单文件 EXE (PyInstaller --onefile --windowed) 冻结后: - 模板/静态走 sys._MEIPASS (用 --add-data 打入) - 库文件 app.db 落在 exe 同目录 (app.py 中 EXE_DIR 处理) - 启动时自动打开浏览器 (app.py __main__ 中 webbrowser.open) 用法: venv 的 python build_exe.py """ import os, sys, platform from PyInstaller.__main__ import run HERE = os.path.dirname(os.path.abspath(__file__)) sep = ";" if platform.system() == "Windows" else ":" args = [ os.path.join(HERE, "app.py"), "--onefile", "--windowed", "--name", "MaterialWMS", "--distpath", os.path.join(HERE, "dist_pkg"), "--workpath", os.path.join(HERE, "build_pkg"), "--specpath", os.path.join(HERE, "build_pkg"), "--add-data", os.path.join(HERE, "templates") + sep + "templates", "--add-data", os.path.join(HERE, "static") + sep + "static", "--hidden-import", "flask", "--hidden-import", "flask_sqlalchemy", "--hidden-import", "sqlalchemy", "--hidden-import", "openpyxl", "--hidden-import", "excel_io", "--noconfirm", ] print("PyInstaller args:", args) run(args) print("BUILD DONE ->", os.path.join(HERE, "dist", "MaterialWMS.exe"))