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

M1 Mac迁移PyQt5项目到PyQt6时qRegisterResourceData缺失如何解决

PyQt6 资源文件qRegisterResourceData不存在报错解决方案

问题原因

PyQt6 对Qt6的资源系统接口做了重构,删除了原PyQt5中QtCore模块下直接暴露的qRegisterResourceData、qUnregisterResourceData两个全局方法,同时调整了资源注册的参数规则。你当前的pyjtt_res_rc.py是基于PyQt5的pyrcc5工具生成的,仅手动修改导入语句无法适配PyQt6的接口规则。

解决方案

方案1(推荐):用PyQt6配套工具重新生成资源文件

该方案可以避免手动修改代码的隐藏兼容问题,操作步骤如下:

  • 找到生成pyjtt_res_rc.py对应的原始Qt资源配置文件(后缀为.qrc,一般和项目源码放在一起)
  • 先安装PyQt6配套的资源编译工具:
    pip3 install pyqt6 pyqt6-tools
    
  • M1芯片Mac注意:请使用原生arm64架构的Python 3.8+执行安装,不要用Rosetta 2转译的Python版本,避免工具适配问题
  • 执行编译命令生成适配PyQt6的资源文件:
    pyrcc6 你的资源文件名.qrc -o pyjtt_res_rc.py
    
  • 用新生成的资源文件替换旧文件即可正常启动应用

方案2:找不到原始.qrc文件时手动修改现有资源文件

如果丢失了原始的.qrc配置文件,可以直接修改现有pyjtt_res_rc.py的两个资源方法,调整接口调用规则:

# 原有导入语句保留
from PyQt6 import QtCore

# 中间的qt_resource_data、qt_resource_struct、qt_resource_name变量定义全部保留不动

# 修改资源注册、注销方法如下
def qInitResources():
    QtCore.QResource.registerResourceData(qt_resource_data, qt_resource_struct, qt_resource_name)

def qCleanupResources():
    QtCore.QResource.unregisterResourceData(qt_resource_data, qt_resource_struct, qt_resource_name)

# 末尾的qInitResources()调用保留
qInitResources()

修改后保存文件重启应用即可解决报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:01