fix: 解决打包后三个运行时问题
- rthook_paddle.py: stub paddle.utils.cpp_extension,避免Cython缺文件崩溃 - build_exe.py: 显式收集paddle DLLs(mklml.dll等) - ocr_offline.py: 非ASCII路径自动复制模型到临时目录,绕过PaddlePaddle C++路径限制 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
├── _internal/ (运行时依赖)
|
||||
└── models/ (OCR 模型,需提前通过 prepare_models.py 准备)
|
||||
"""
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import shutil
|
||||
@@ -16,6 +17,10 @@ from pathlib import Path
|
||||
PROJECT_ROOT = Path(__file__).parent
|
||||
DIST_NAME = "信封信息提取系统"
|
||||
|
||||
# paddle DLLs 所在目录(mklml.dll 等不会被 PyInstaller 自动收集)
|
||||
import paddle as _paddle
|
||||
PADDLE_LIBS = str(Path(_paddle.__file__).parent / "libs")
|
||||
|
||||
|
||||
def build(debug=False):
|
||||
"""使用 PyInstaller 打包(onedir 模式)"""
|
||||
@@ -39,6 +44,10 @@ def build(debug=False):
|
||||
"--hidden-import=ocr_offline",
|
||||
"--hidden-import=paddleocr",
|
||||
"--hidden-import=paddle",
|
||||
# --- paddle DLLs(mklml.dll 等不会被自动收集) ---
|
||||
f"--add-binary={PADDLE_LIBS}/*.dll{os.pathsep}paddle/libs",
|
||||
# --- runtime hook: stub 掉 paddle 开发模块,避免 Cython 缺文件崩溃 ---
|
||||
"--runtime-hook=rthook_paddle.py",
|
||||
# --- 收集 paddleocr 全部数据(模型配置、字典等) ---
|
||||
"--collect-all=paddleocr",
|
||||
# --- 元数据(部分库在运行时通过 importlib.metadata 查版本) ---
|
||||
|
||||
Reference in New Issue
Block a user