导入OpenAI Whisper后无法用PyInstaller生成.exe文件求助
PyInstaller打包Whisper脚本时tqdm元数据缺失的解决方法
运行打包后的.exe文件时出现以下错误:
Traceback (most recent call last): File "transformers\utils\versions.py", line 108, in require_version File "importlib\metadata\__init__.py", line 996, in version File "importlib\metadata\__init__.py", line 969, in distribution File "importlib\metadata\__init__.py", line 548, in from_name importlib.metadata.PackageNotFoundError: No package metadata was found for tqdm During handling of the above exception, another exception occurred: Traceback (most recent call last): File "Whisper.py", line 2, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "whisper\__init__.py", line 12, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "whisper\decoding.py", line 11, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "whisper\tokenizer.py", line 8, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "transformers\__init__.py", line 30, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 352, in exec_module File "transformers\dependency_versions_check.py", line 41, in <module> File "transformers\utils\versions.py", line 123, in require_version_core File "transformers\utils\versions.py", line 110, in require_version importlib.metadata.PackageNotFoundError: No package metadata was found for 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 [10092] Failed to execute script 'Whisper' due to unhandled exception!
用户的源码:
import whisper import os from timeit import default_timer as timer start = timer() audio_file = "MyAudioFile.wav" model = whisper.load_model("small") options = {"language": "de"} res = model.transcribe(f"C:/Users/Username/Desktop/Transcribe/{audio_file}", **options) end = timer() os.system("cls") print(res["text"]) print("\nFinished in " + str(end-start) + " seconds!") input("Press ENTER to close the program.")
脚本在本地控制台/VS Code运行正常,但打包后.exe报错,重装tqdm无效。
解决方法:
显式导入tqdm到脚本
在脚本开头添加tqdm的导入语句,让PyInstaller的自动依赖检测能捕获到这个包:import tqdm # 新增该行 import whisper import os from timeit import default_timer as timer用hidden-import参数强制包含依赖
命令行打包时执行:pyinstaller --hidden-import=tqdm Whisper.py若使用auto-py-to-exe,在「Hidden Imports」输入框中填入
tqdm,再重新打包。修改.spec文件补全元数据
- 生成.spec文件:
pyinstaller --name Whisper Whisper.py - 打开
Whisper.spec,找到hiddenimports列表,添加tqdm:hiddenimports=['tqdm'], - 若仍存在元数据问题,找到本地tqdm的
dist-info文件夹路径(如C:\PythonXX\Lib\site-packages\tqdm-XXXX.dist-info),添加到datas中:datas=[(r'C:\PythonXX\Lib\site-packages\tqdm-XXXX.dist-info', 'tqdm-XXXX.dist-info')], - 用修改后的.spec文件重新打包:
pyinstaller Whisper.spec
- 生成.spec文件:
清理缓存后重新打包
删除生成的build、dist文件夹,以及脚本目录下的__pycache__文件夹,避免缓存残留导致的问题,再重新执行打包命令。
内容的提问来源于stack exchange,提问作者Arthy01
相关产品推荐
相关产品推荐

