diff --git a/build_exe.py b/build_exe.py index 84d4d66..ea5bec5 100644 --- a/build_exe.py +++ b/build_exe.py @@ -4,42 +4,52 @@ 使用方法: pip install pyinstaller && python build_exe.py """ import subprocess +import sys from pathlib import Path PROJECT_ROOT = Path(__file__).parent def build(): - """使用 PyInstaller 打包""" - - # PyInstaller 命令 - cmd = [ - "pyinstaller", - "--name=信封信息提取系统", - "--onefile", # 打包成单个 exe - "--windowed", # 无控制台窗口 - "--clean", # 清理缓存 - "--noconfirm", # 覆盖输出目录不询问 - "--add-data=src;src", # 包含源码目录 - "--hidden-import=PaddleOCR", - "--hidden-import=paddleocr", - "--hidden-import=cv2", - "--hidden-import=PyQt6", - "--collect-all=PaddleOCR", - "--collect-all=paddleocr", - "src/desktop.py", - ] + """使用 PyInstaller 打包(使用 Python -m 方式兼容性更好)""" print("正在打包,请稍候...") print(f"工作目录: {PROJECT_ROOT}") - print(f"输出目录: {PROJECT_ROOT / 'dist'}") print("-" * 50) - subprocess.run(cmd, check=True, cwd=PROJECT_ROOT) + # 使用 Python -m PyInstaller 方式,兼容性更好 + cmd = [ + sys.executable, + "-m", "PyInstaller", + "--name=信封信息提取系统", + "--onefile", + "--windowed", + "--clean", + "--noconfirm", + "--add-data=src;src", + "src/desktop.py", + ] - print("-" * 50) - print("打包完成!") - print(f"可执行文件: {PROJECT_ROOT / 'dist' / '信封信息提取系统.exe'}") + try: + subprocess.run(cmd, check=True, cwd=str(PROJECT_ROOT)) + print("-" * 50) + print("打包完成!") + exe_path = PROJECT_ROOT / "dist" / "信封信息提取系统.exe" + if exe_path.exists(): + size_mb = exe_path.stat().st_size / 1024 / 1024 + print(f"可执行文件: {exe_path}") + print(f"文件大小: {size_mb:.1f} MB") + else: + print("警告: 未找到输出文件") + except subprocess.CalledProcessError as e: + print("-" * 50) + print(f"打包失败: {e}") + sys.exit(1) + except FileNotFoundError: + print("-" * 50) + print("错误: 未找到 PyInstaller") + print("请先安装: pip install pyinstaller") + sys.exit(1) if __name__ == "__main__":