You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包Hugging Face模型为exe时卡在pipeline环节求助

排查PyInstaller打包Hugging Face代码exe终止问题的方法

一、先获取明确的报错信息

打包后无提示终止,核心是先把隐性错误抓出来:

  • 命令行运行exe:不要双击启动,打开CMD切换到exe所在目录,直接执行your_exe_name.exe,控制台会输出所有未捕获的报错信息,包括模型加载阶段的隐性异常。
  • 添加异常捕获与日志:在模型加载、classifier初始化的代码块外层套异常捕获,将错误写入本地文件留存:
import traceback
try:
    # 你的模型加载、classifier初始化代码
    classifier = ...
    print(classifier)
except Exception as e:
    with open("error_log.txt", "w", encoding="utf-8") as f:
        f.write(str(e))
        f.write("\n")
        f.write(traceback.format_exc())

重新打包后运行,查看生成的error_log.txt即可获取具体错误详情。

二、针对性排查步骤

  1. 修正模型路径的动态获取
    PyInstaller打包后运行的工作目录可能和开发时不一致,避免用相对路径,改用动态路径拼接:
import os
# 获取exe所在的实际目录
base_path = os.path.dirname(os.path.abspath(__file__))
# 拼接本地模型文件夹路径
model_path = os.path.join(base_path, "your_local_model_folder")

确保打包后exe能正确定位到模型文件。

  1. 完善PyInstaller打包参数
    打包时必须将模型文件、tokenizer配置文件等静态资源包含进去:
  • 使用--add-data参数:Windows系统用分号分隔源路径和目标路径,Mac/Linux用冒号:
pyinstaller --add-data "your_model_folder;your_model_folder" your_script.py
  • 或者修改生成的spec文件,在datas字段中添加模型文件夹:
a = Analysis(..., datas=[('your_model_folder', 'your_model_folder')], ...)
  1. 规避Hugging Face缓存问题
    如果代码中使用from_pretrained自动下载模型,打包后可能无法读取缓存。建议提前将模型下载到本地目录,直接用本地路径加载,避免打包后触发自动下载逻辑。

  2. 测试最小化代码定位问题
    把代码简化到仅加载模型和打印classifier的最小版本,比如:

from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline

tokenizer = AutoTokenizer.from_pretrained("./local_model")
model = AutoModelForSequenceClassification.from_pretrained("./local_model")
classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
print(classifier)

打包运行这个最小代码,如果能正常执行,再逐步添加原业务代码,定位到触发终止的具体模块。

  1. 检查依赖版本兼容性
    确认PyInstaller、transformers、torch等依赖的版本是否兼容,部分新版本transformers可能与旧版PyInstaller存在适配问题,可尝试降级或升级对应依赖包测试。

内容的提问来源于stack exchange,提问作者Talha Anwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:30:05