增加exe打包配置

This commit is contained in:
lasean.zhou
2026-04-14 17:07:08 +08:00
parent cc83fe963a
commit 026d3bf88c
3 changed files with 376 additions and 0 deletions
+152
View File
@@ -0,0 +1,152 @@
# -*- mode: python ; coding: utf-8 -*-
import os
from pathlib import Path
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
# 获取项目根目录(spec 文件所在目录)
import sys
_REPO_DIR = Path(os.getcwd()).resolve()
# 根目录执行:pyinstaller --clean main.spec
# 收集配置文件夹和数据文件
datas = [
# 所有数据文件都不打包,从外部读取
# ('.env', '.'),
# ('data/schemas', 'data/schemas'),
# ('data/embeddings', 'data/embeddings'),
# ('data/experiences', 'data/experiences'),
]
# 收集所有需要的隐藏导入
hiddenimports = [
# Web 框架
'fastapi',
'fastapi.middleware.cors',
'fastapi.responses',
'uvicorn',
'uvicorn.lifespan.on',
'uvicorn.config',
'uvicorn.protocols.http.auto',
'uvicorn.protocols.websockets.auto',
'uvicorn.loops.auto',
# Backend 模块(重要!)
'main', # backend/main.py
'backend.main',
'backend.nl_lite_store',
'backend.agents',
'backend.agents.orchestrator',
'backend.agents.schema_linker',
'backend.agents.sql_generator',
'backend.agents.validator',
'backend.config',
'backend.config.prompts',
'backend.config.settings',
'backend.db',
'backend.db.engine',
'backend.db.dbhub_tools',
'backend.db.dbhub_sql_parser',
'backend.db.dbhub_allowed_keywords',
'backend.llm',
'backend.llm.deepseek_client',
'backend.schema',
'backend.schema.manager',
'backend.schema.loader',
'backend.schema.indexer',
'backend.schema.models',
'backend.utils',
'backend.utils.dialog_classifier',
'backend.utils.embedding',
'backend.utils.fewshot_selector',
'backend.utils.question_locale',
'backend.utils.sql_parser',
'backend.utils.validators',
# 数据库相关
'pymssql',
'sqlalchemy',
'sqlalchemy.dialects.mssql.pymssql',
'sqlalchemy.dialects.mysql',
'sqlalchemy.dialects.postgresql',
'sqlglot',
'sqlglot.dialects',
'sqlparse',
# 向量数据库 - 使用 collect_submodules 自动收集所有子模块
# Embedding 相关
'sentencepiece',
'accelerate',
'safetensors',
# LLM API
'openai',
# 数据处理
'numpy',
'jieba',
# Pydantic
'pydantic',
'pydantic_settings',
'dotenv',
# 工具库
'tenacity',
'structlog',
'tqdm',
'camel_ai',
# 标准库中可能被遗漏的
'email.mime.text',
'email.mime.multipart',
] + collect_submodules('chromadb')
# 排除不必要的模块以减小体积
excludes = [
'tkinter',
'matplotlib',
'scipy',
'pandas.tests',
'numpy.testing',
'jupyter',
'notebook',
'IPython',
'pytest',
]
a = Analysis(
['api_server.py'],
pathex=[str(_REPO_DIR)],
binaries=[],
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=excludes,
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas, # 单文件模式:将数据文件打包进 exe
[],
name='Backman_Text2SQL_Server',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False, # 禁用 UPX,避免兼容性问题
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)