使用PyInstaller打包Python脚本为exe时出现h5py的defs导入DLL加载失败错误
问题原因
这个报错是PyInstaller打包时未正确收录h5py库的依赖动态链接库导致的:
- tensorflowjs依赖h5py处理H5格式模型文件,h5py是C扩展实现的库,本身依赖HDF5相关的DLL文件
- PyInstaller自动检索依赖时,经常漏捡h5py的内部模块及关联DLL,导致打包后的exe运行时找不到依赖文件抛出错误
解决方案
按优先级尝试以下操作即可:
- 打包时显式添加h5py的隐藏导入和依赖
执行打包命令时增加对应参数,示例命令如下:
注意将pyinstaller -F abc.py --hidden-import h5py.defs --hidden-import h5py.utils --hidden-import h5py.h5ac --hidden-import h5py._proxy --add-data "你的Python安装路径/Lib/site-packages/h5py/*.dll;h5py"你的Python安装路径替换为你本地实际的Python根目录路径,Windows环境下路径分隔符用正斜杠或者双反斜杠即可。 - 更换适配版本的h5py
新版本h5py经常存在兼容性问题,可卸载当前版本后安装稳定兼容版:
安装完成后重新执行打包操作即可。pip uninstall h5py -y pip install h5py==3.7.0 - Conda环境用户可选择用conda安装h5py
conda源安装的h5py会自动补全所有依赖DLL,PyInstaller检索成功率更高:conda install h5py
提前验证:修改前先直接在本地Python环境执行
python abc.py确认可正常运行,排除本地环境本身就存在依赖错误的问题。
内容的提问来源于stack exchange,提问作者Sushant Agarwal
相关产品推荐
相关产品推荐

