使用PyInstaller打包时仅出现pikepdf导入失败问题求助
解决auto-py-to-exe打包含pikepdf脚本时的版本检测错误
错误原因
打包后的exe运行时,pikepdf通过importlib_metadata动态读取版本元数据,但PyInstaller未收集到pikepdf的元数据文件(如dist-info目录下的文件),导致版本检测失败。
解决方案
方案1:硬编码pikepdf版本号
直接修改pikepdf的版本文件,跳过动态检测:
- 找到Python环境中pikepdf的安装目录(比如
Lib\site-packages\pikepdf) - 打开
_version.py文件,将原有动态获取版本的代码:
替换为硬编码版本号:from importlib_metadata import version as _version __version__ = _version("pikepdf")__version__ = "5.4.2" - 保存文件后,重新用auto-py-to-exe打包脚本。
方案2:强制PyInstaller收集pikepdf的元数据和依赖
在auto-py-to-exe中配置额外参数,确保元数据被打包:
- 切换到Advanced标签页
- 在Hidden Imports输入框中添加:
pikepdf、importlib_metadata - 在Additional Files区域,点击Add Files,找到Python环境中
site-packages下的pikepdf-5.4.2.dist-info文件夹(版本号对应你的安装版本),将其添加进去,设置目标路径为同目录(即不修改输出路径) - 重新打包生成exe。
方案3:调整版本兼容性
尝试更换pikepdf或PyInstaller版本,避开兼容性问题:
- 降级pikepdf到5.3.x版本:执行
pip install pikepdf==5.3.2 - 或降级PyInstaller到5.13.2版本(auto-py-to-exe会使用对应版本的PyInstaller):执行
pip install pyinstaller==5.13.2 - 重新打包测试。
内容的提问来源于stack exchange,提问作者danielliuce
相关产品推荐
相关产品推荐

