PyInstaller打包Python为exe时报错PyQt5无__version__属性如何修复
报错原因
PyInstaller在打包过程中触发了PyQt5对应的打包钩子,尝试读取PyQt5版本信息时失败,根本原因是你的环境中仅安装了PyQt6,没有完整安装PyQt5,或你的项目代码中还残留未修改的PyQt5导入语句。
修复步骤
- 排查项目内所有Qt相关导入语句,确认所有引用都是
PyQt6开头,不存在import PyQt5、from PyQt5 import xxx类的漏改语句,完成PyQt5到PyQt6的全量引用替换。 - 打包时手动排除PyQt5模块,避免触发对应的钩子,在原有打包命令中增加
--exclude-module PyQt5参数,示例如下:
pyinstaller --onefile --windowed --exclude-module PyQt5 你的主程序文件.py
- 卸载环境内残留的PyQt5相关零碎文件:
pip uninstall PyQt5 PyQt5-sip -y
- 升级PyInstaller到最新版本,旧版本对PyQt6的适配存在缺陷:
pip install --upgrade pyinstaller
- 若上述操作后仍报错,打包时增加参数手动导入PyQt6:
pyinstaller --onefile --windowed --exclude-module PyQt5 --hidden-import PyQt6 你的主程序文件.py
补充说明
如果你使用自定义的spec文件进行打包,直接在spec文件的excludes列表中添加'PyQt5',在hiddenimports列表中添加'PyQt6'后重新打包即可。
内容的提问来源于stack exchange,提问作者vinsent paramanantham
相关产品推荐
相关产品推荐

