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

PyInstaller打包transformers项目报错TypeError: unhashable type: 'AddedToken'求助

解决PyInstaller打包transformers项目时的TypeError: unhashable type: 'AddedToken'问题

问题复现

直接运行test.py正常,但通过PyInstaller打包为exe后运行出现以下错误:

None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
Traceback (most recent call last):
File "test.py", line 25, in
File "transformers\tokenization_utils_base.py", line 2024, in from_pretrained
File "transformers\tokenization_utils_base.py", line 2256, in _from_pretrained
File "transformers\models\bert\tokenization_bert.py", line 217, in init
File "transformers\tokenization_utils.py", line 367, in init
File "transformers\tokenization_utils.py", line 507, in _add_tokens
File "transformers\tokenization_utils.py", line 512, in _update_trie
TypeError: unhashable type: 'AddedToken'
[3492] Failed to execute script 'test' due to unhandled exception!

解决方案

1. 给AddedToken类添加哈希方法

PyInstaller打包后,AddedToken实例因缺少__hash__方法导致不可哈希,在更新trie结构时抛出错误。在test.py开头添加以下补丁代码:

from transformers import AddedToken

# 为AddedToken添加哈希方法,解决打包后的不可哈希问题
if not hasattr(AddedToken, '__hash__'):
    def added_token_hash(self):
        # 基于AddedToken的核心属性生成哈希值
        return hash((self.content, self.single_word, self.lstrip, self.rstrip, self.normalized))
    AddedToken.__hash__ = added_token_hash

2. 完善PyTorch的打包配置

错误提示未找到PyTorch,说明打包时未正确包含PyTorch依赖。修改test.spec的hiddenimports字段,添加PyTorch相关模块:

hiddenimports=['transformers', 'torch', 'torch._C', 'torch.nn.functional'],

如果使用GPU版本PyTorch,需确保CUDA相关动态链接库被自动收集(PyInstaller通常会处理,但如果仍有问题,可手动将CUDA的dll路径添加到binaries列表)。

3. 补充transformers的元数据与本地资源

  • 在test.spec的datas中添加transformers的元数据:
    datas += copy_metadata('transformers')
    
  • 若你的项目从本地加载tokenizer或模型文件,需将这些文件添加到datas中,例如:
    datas = [('./data/sb.csv', 'data'), ('./path/to/your/model', 'path/to/your/model')]
    

4. 重新打包测试

保存修改后的文件,执行打包命令:

pyinstaller test.spec

运行生成的exe文件,验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:12:33