PyInstaller打包exe报错:解压_pywrap_tensorflow_internal.pyd等文件失败
解决PyInstaller打包exe解压失败问题
1. 禁用UPX压缩
UPX压缩可能破坏部分二进制文件(如.pyd、.dll)的结构,导致解压失败。修改你的.spec文件:
- 找到
upx=True改为upx=False; - 或者保留UPX压缩,添加排除列表:
upx_exclude=['_pywrap_tensorflow_internal.pyd', 'VCOMP140.DLL']
2. 手动指定包含缺失的DLL
VCOMP140.DLL属于Visual C++ Redistributable组件,打包时可能未被正确收集:
- 从虚拟环境的
Lib\site-packages目录或系统的System32(64位系统)/SysWOW64(32位系统)目录找到该文件; - 在
.spec文件的datas列表中添加该文件路径:datas=[('C:/your/path/to/VCOMP140.DLL', '.')] - 执行
pyinstaller your_script.spec重新打包。
3. 清理缓存后重新打包
残留的缓存文件可能引发异常,步骤如下:
- 删除项目下的
build、dist文件夹; - 删除所有
__pycache__文件夹; - 执行
pyinstaller --clean your_script.spec重新生成exe。
4. 优化TensorFlow相关打包配置
针对_pywrap_tensorflow_internal.pyd的问题,调整TensorFlow的收集规则:
- 在
.spec文件中添加TensorFlow的完整依赖收集:from PyInstaller.utils.hooks import collect_all tf_datas, tf_binaries, tf_hiddenimports = collect_all('tensorflow') datas += tf_datas binaries += tf_binaries hiddenimports += tf_hiddenimports - 同时在
hiddenimports列表中显式添加相关模块:hiddenimports=['_pywrap_tensorflow_internal']
内容的提问来源于stack exchange,提问作者pierrevslouis
相关产品推荐
相关产品推荐

