This commit is contained in:
Jimmy
2026-04-27 15:24:41 +08:00
parent 29954a7af0
commit 0cea74ad97
8 changed files with 2123 additions and 0 deletions

75
build.spec Normal file
View File

@@ -0,0 +1,75 @@
# -*- mode: python ; coding: utf-8 -*-
import os
block_cipher = None
# 获取当前工作目录(项目根目录)
PROJECT_ROOT = os.path.abspath('.')
# 动态组装需要打包的静态数据文件
datas = [
('web_ui/templates', 'web_ui/templates')
]
if os.path.exists(os.path.join(PROJECT_ROOT, 'web_ui', 'static')):
datas.append(('web_ui/static', 'web_ui/static'))
if os.path.exists(os.path.join(PROJECT_ROOT, 'browser_login', '.env')):
datas.append(('browser_login/.env', 'browser_login'))
a = Analysis(
['web_ui/app.py'], # 主入口点
pathex=[
PROJECT_ROOT,
os.path.join(PROJECT_ROOT, 'browser_login') # 确保能找到抓取脚本的路径
],
binaries=[],
datas=datas,
hiddenimports=[
'flask',
'apscheduler.schedulers.background',
'apscheduler.triggers.interval', # 必须显式声明,否则打包后定时任务可能找不到触发器
'DrissionPage',
'dotenv',
'sqlite3',
# 我们通过字符串动态导入的模块,必须声明让 PyInstaller 去追踪
'fetch_receipt_details_incremental',
'fetch_bom_cost_full_tree',
'config',
'login',
'auto_launcher',
'bom_query'
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='DatieERP', # 生成的 .exe 文件名称
debug=False, # 生产环境关闭 Debug 模式
bootloader_ignore_signals=False,
strip=False,
upx=True, # 启用 UPX 压缩以减小包体积(如果环境中有的话)
upx_exclude=[],
runtime_tmpdir=None, # 使用默认临时目录 (即 sys._MEIPASS)
console=True, # 是否保留黑色命令行窗口(开发初期建议保留看日志,稳定后可改为 False
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)