使用PyInstaller生成的.exe运行报错:找不到'tqdm>=4.27'依赖
问题描述
开发句子相似度检测应用时,通过PyInstaller成功生成.exe文件,但运行时输入参数后出现如下报错:
The 'tqdm>=4.27' distribution was not found and is required by this application.
Try: pip install transformers -U or pip install -e '.[dev]' if you're working with git main
已安装tqdm==4.64.1版本,问题仍未解决。当前使用的spec文件内容如下:
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['render_ui.py'], pathex=[], binaries=[], datas=[('Config\\favicon.ico',".), ('Config\\miniLM.sav",".")], hiddenimports=['sklearn.metrics._pairwise_distances_reduction._datasets_pair', 'sklearn.metrics._pairwise_distances_reduction._middle_term_computer', 'sklearn.metrics._pairwise_distances_reduction._argkmin', 'sklearn.metrics._pairwise_distances_reduction._base', 'sklearn.metrics._pairwise_distances_reduction._radius_neighbors', 'sentence_transformers.SentenceTransformer'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='App', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon='Config\\favicon.ico')
排查与解决方法
1. 确认打包环境与依赖环境一致
确保生成exe时使用的Python环境,和安装tqdm的环境是同一个:
- 查看当前Python路径:
where python(Windows)/which python(Linux/macOS) - 查看已安装包:
pip list | findstr tqdm(Windows)/pip list | grep tqdm(Linux/macOS)
若环境不一致,切换到正确环境后重新打包。
2. 手动添加tqdm到hiddenimports
PyInstaller可能未自动检测到tqdm的依赖,将其添加到spec文件的hiddenimports列表中:
hiddenimports=['sklearn.metrics._pairwise_distances_reduction._datasets_pair', 'sklearn.metrics._pairwise_distances_reduction._middle_term_computer', 'sklearn.metrics._pairwise_distances_reduction._argkmin', 'sklearn.metrics._pairwise_distances_reduction._base', 'sklearn.metrics._pairwise_distances_reduction._radius_neighbors', 'sentence_transformers.SentenceTransformer', 'tqdm', 'tqdm.auto']
修改后执行pyinstaller your_spec_file.spec重新生成exe。
3. 修复spec文件中的语法错误
注意到datas列表存在引号配对错误:
原代码:('Config\\favicon.ico',".), ('Config\\miniLM.sav",".")
修正为:('Config\\favicon.ico', "."), ('Config\\miniLM.sav', ".")
语法错误可能导致PyInstaller打包时依赖检测异常。
4. 清理缓存后重新打包
PyInstaller缓存可能残留旧依赖信息,执行以下步骤:
- 删除
build、dist文件夹 - 运行
pyinstaller --clean your_spec_file.spec,--clean参数会清理缓存并重新打包
5. 更新transformers依赖
报错提示与transformers相关,更新该库确保版本兼容:
pip install transformers -U
更新完成后重新打包。
内容的提问来源于stack exchange,提问作者abhiram subramanya
相关产品推荐
相关产品推荐

