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

使用PyInstaller打包含sentence_transformers脚本遇导入错误求助

解决PyInstaller打包含sentence_transformers脚本时的transformers模块缺失问题

RuntimeError: Failed to import transformers.models.clip.processing_clip because of the following error (look up to see its traceback):
[Errno 2] No such file or directory: 'C:\Users\xxx\AppData\Local\Temp\_MEI135322\transformers\init.py'

你的PyInstaller命令未针对transformers模块配置打包规则,这是导致错误的核心原因,以下是具体解决思路:

解决思路

1. 补充transformers相关打包参数

在现有命令基础上添加以下参数,确保PyInstaller识别并打包transformers的核心文件、数据及子模块:

--hidden-import=transformers \
--collect-data transformers \
--copy-metadata transformers \
--hidden-import=transformers.models.clip \
--hidden-import=transformers.models.clip.processing_clip

2. 自定义hook文件自动收集依赖

如果手动添加参数仍有遗漏,在当前目录创建hook-transformers.py文件(对应你命令中的--additional-hooks-dir=.),内容如下:

from PyInstaller.utils.hooks import collect_data_files, collect_submodules

# 收集transformers的所有数据文件
datas = collect_data_files('transformers')
# 收集transformers的所有子模块
hiddenimports = collect_submodules('transformers')

PyInstaller会自动读取该hook,完整打包transformers的所有依赖内容。

3. 处理预训练模型的打包

若脚本依赖sentence_transformers的预训练模型,需确保模型文件被正确打包:

  • 提前将模型下载到本地目录(比如./local_model)
  • 修改脚本中模型加载路径为本地路径:
    from sentence_transformers import SentenceTransformer
    model = SentenceTransformer('./local_model')
    
  • 在PyInstaller命令中添加模型文件的打包参数(Windows环境):
    --add-data "./local_model;./local_model"
    

4. 调试打包内容

暂时去掉--onefile参数,生成文件夹形式的打包结果:

pyinstaller [你的其他参数] my_script.py

进入dist/my_script目录,检查是否存在transformers文件夹及其中的__init__.py文件,若缺失则针对性补充对应的--hidden-import或--collect-data参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:06:22