You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller4.3打包成功4.4报PyQt5无__version__属性如何解决

PyInstaller 4.4 版本 PyQt5 属性缺失报错解决方案

报错信息:AttributeError: Module 'PyQt5' has no attribute 'version'

该问题是PyInstaller 4.4版本的已知兼容性缺陷:4.4版本新增了PyQt5版本检测逻辑,会直接读取PyQt5.__version__顶层属性,但通过conda、自定义编译、精简安装包等渠道安装的PyQt5默认不会暴露该顶层属性,而4.3及更早版本没有这项检测逻辑,因此打包正常。

以下是三种可行的解决方案,可根据自身场景选择:

方案1:入口脚本注入属性(无需修改依赖,推荐优先使用)

在项目入口脚本的最顶部,所有其他导入语句之前添加以下代码,提前补全缺失的属性:

import PyQt5
if not hasattr(PyQt5, '__version__'):
    from PyQt5.QtCore import PYQT_VERSION_STR
    PyQt5.__version__ = PYQT_VERSION_STR

该方案不影响原有业务逻辑,也兼容所有PyQt5和PyInstaller版本。

方案2:修改PyInstaller对应Hook文件(无需修改业务代码)

找到PyInstaller安装路径下的钩子文件:hooks/hook-PyQt5.py,将文件内读取PyQt5.__version__的代码段替换为从QtCore模块读取版本的逻辑:

替换前的代码:

version = PyQt5.__version__

替换后的代码:

from PyQt5.QtCore import PYQT_VERSION_STR
version = PYQT_VERSION_STR

方案3:升级PyInstaller到4.5及以上版本

该缺陷已经在PyInstaller 4.5及之后的版本被官方修复,官方调整了PyQt系列库的版本检测逻辑,不再直接读取顶层__version__属性。如果你的场景允许升级PyInstaller到更高版本,直接执行升级命令即可:
pip install --upgrade pyinstaller

验证方式

修改完成后重新执行原有打包命令,确认不再抛出该属性错误,打包完成后运行生成的程序文件验证功能正常即可。

内容的提问来源于stack exchange,提问作者fishbacp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:18:02