RK3568平台使用PyQt5遇到的_ZTI18QOpenGLTimeMonitor, version Qt_5问题解决

news2025/1/24 8:41:43

1、背景

       由于开发需要在ubuntu 20.04 RK3568平台上面使用PyQt5来运行GUI软件,整个软件的环境如下:python3.8  PyQt5 5.14.1版本

firefly@firefly:/usr/bin$ pip list
Package                Version
---------------------- --------------------
blinker                1.4
certifi                2019.11.28
chardet                3.0.4
command-not-found      0.3
cryptography           2.8
Cython                 0.29.33
dbus-python            1.2.16
distro                 1.4.0
entrypoints            0.3
httplib2               0.14.0
idna                   2.8
keyring                18.0.1
launchpadlib           1.10.13
lazr.restfulclient     0.14.2
lazr.uri               1.0.3
netifaces              0.10.4
oauthlib               3.1.0
onboard                1.4.1
pip                    20.0.2
pycairo                1.16.2
PyGObject              3.36.0
PyJWT                  1.7.1
PyQt5                  5.14.1
pyserial               3.5
python-apt             2.0.0+ubuntu0.20.4.8
PyYAML                 5.3.1
requests               2.22.0
requests-unixsocket    0.2.0
SecretStorage          2.3.1
setuptools             45.2.0
simplejson             3.16.0
sip                    4.19.21
six                    1.14.0
ssh-import-id          5.10
ubuntu-advantage-tools 27.10
urllib3                1.25.8
wadllib                1.3.3
wheel                  0.34.2

2、使用Qt遇到问题

        从PyQt5中import QtGui报错误ImportError: /usr/lib/python3/dist-packages/PyQt5/QtGui.cpython-38-aarch64-linux-gnu.so: undefined symbol: _ZTI18QOpenGLTimeMonitor, version Qt_5。

     经过百度查找到Qt官方的wiki有类似解决办法:Qt for Python/Considerations - Qt Wiki

      上面的意思就是说需要安装pyside2-es2 package, 我以为是需要安装pyside2包。

      参考下面的博文安装pyside2(2条消息) 树莓派(armv7l,arm32)buster配置Python虚拟环境、安装PyQt5、安装PySide2_树莓派pyqt5开发_DEDSEC_Roger的博客-CSDN博客

    安装PySide2的正确方式

        sudo apt install pyside2*
        sudo apt install python3-pyside2*
    相信我,这是最快捷的方法,使用pip是不行的,因为PySide系列(2,6)没有给arm平台编译wheel。另外,PySide6在树莓派的系统源里没有

       经过以上操作成功的安装了pyside2软件包,并且在python环境中可以import pyside2,但是在使用PyQt5 import QtGui时依然报上面的错误。看来上面的操作全部白费。要接着研究安装pyside2-es2 package。

3、深入研究分析解决问题

      思考了几天,上面的操作说明在RK3568平台上安装的PyQt5软件包中缺少一些动态库,可能是由当初发布的PyQt5程序(ARM64平台)编译时,缺少了相关组件导致的。那么需要使用找到PyQt5的源码进行编译安装,同时也在找到教程:特别说明以下操作全部在RK3568平台上进行。(50条消息) ARM64平台上安装PyQt5环境【包括error: Qt::ItemDataRole is not a class or namespace解决方案】_arm pyqt5_雪中奇侠的博客-CSDN博客

        RK3568平台上python是3.8,删除已经安装的pyqt5.14.1,  使用apt remove python3-pyqt即可,删除sip。

        匹配python3.8的pyQt程序是5.15.2,PyQt5版本需与SIP版本对应。这两个版本可以从以下网址下载。
SIP | 4.19.25下载(https://www.riverbankcomputing.com/static/Downloads/sip/4.19.25/sip-4.19.25.tar.gz)

PyQt5 | 5.15.2下载(https://pypi.tuna.tsinghua.edu.cn/packages/28/6c/640e3f5c734c296a7193079a86842a789edb7988dca39eab44579088a1d1/PyQt5-5.15.2.tar.gz)

3.1  安装步骤
    源码编译需要依赖qmake工具链,rk3568环境直接 sudo apt-get install qt5-default即可。
    安装编译所需的软件包

     sudo apt-get install cmake gcc g++
     pip install --upgrade pip
     pip install wheel setuptools

  3.2 源码编译SIP包

      tar zxvf sip-4.19.25.tar.gz
     cd ./sip-4.19.25
      sudo python3.8 configure.py --sip-module PyQt5.sip
     sudo make
     sudo make install

   3.3 源码编译 PyQt5

      PyQt5软件包代码很多,由于是在RK3568平台上面进行编译总计花了约12小时才完成,慢慢等吧,要不在使用电脑配置交叉编译环境。

     tar zxvf PyQt5-5.15.2.tar.gz
    cd ./PyQt5-5.15.2
     sudo python3.8 configure.py

     sudo make -j4

     sudo make install 

     PyQt5编译后的程序最后安装到了/usr/lib/python3/dist-packages/PyQt5

 3.4 测试PyQt5

        运行python3.8环境,在里面import QtGui无任何报错即可以。

4、运行PyQt应用程序

       这里测试的应用程序是pycom程序,可以参考我的文章(62条消息) 分享自己使用python+pyserial+pyQT5写的串口调试助手_pywinusb_fhqlongteng的博客-CSDN博客

       把pycom代码复制到RK3568平台上面,直接执行sudo python3.8 pycom1.3(注意要在RK3568设备上的运行,通过远程ssh不行),如下图。pycom串口软件可以愉快的在RK3568平台上使用了。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.基于多目标粒子群算法冷热电联供综合能源系统运行优化

4.基于多目标粒子群算法冷热电联供综合能源系统运行优化《文章复现》 相关资源代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 基于多目标算法的冷热电联供型综合能源系统运行优化 考虑用户舒适度的冷热电多能互补综合能源系统优化调度 仿真平台:matl…

微信小程序【TypeError:Cannot read property ‘xxx‘ of undefined】特殊情况解决方法

xxx是一个属性 报错: 解决方法 翻译:TypeError:无法读取未定义的属性“ xxx” 产生原因: 未定义对应的属性变量不能正确的找到对应的变量 解决方法: 原因一: 在data中定义对应变量,并且最…

【51单片机】:定时器的详解(包括对单片机定时解释、各类定时方式,以及中断方式)

学习目标: 51定时/计数器的详解。 码字不易,如有帮助请收藏,点赞哦。 学习内容(背景知识,了解一下对以后学习有帮助): 前提:首先我们知道51单片机内部有21~26个特殊功能寄存器&#…

Linux: 性能分析之On-CPU和Off-CPU

文章目录1. 前言2. 概述3. 分析方法概述3.1 CPU 采样 方法3.2 跟踪 方法4. 使用火焰图分析4.1 On-CPU 分析4.2 Off-CPU 分析4.2.1 Off-CPU 两种分析方法对比4.2.2 生成 Off-CPU 火焰图5. 参考资料1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读…

准备2023(2024)蓝桥杯

前缀和 一维前缀和 s[i]s[i-1]a[i]二维前缀和&#xff08;子矩阵的和&#xff09; s[i][j]s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j] 差分 一维数组 //b是差分数组b[i]c;b[j1]-c;例题 #include<iostream> using namespace std; int n,m; int b[100002],a[100002]; vo…

【系统集成项目管理工程师】信息系统集成及服务

&#x1f4a5;信息系统集成及服务 1、信息技术基础架构库&#xff08;ITIL&#xff09; 简介&#xff1a; 最初是为了提高英国政府部门 IT 服务质量而开发&#xff0c;但它很快在英国的各个企业中得到了广泛的应用和认可。 ITIL 包含着如何管理IT 基础设施的流程描述&#xf…

【OpenCV-Python】cvui 之 trackbar

CVUI 之 trackbar cvui::trackbar() 渲染一个 trackbar&#xff0c; 可以左右拖动或点击对数字进行增加或减少的调整。 不使用离散间隔 使用离散间隔 Python import numpy as np import cv2 import cvuidef trackbar_test():WINDOW_NAME Trackbar-Test# 创建画布frame np.z…

2023-数据质量管理方法总结

一、数据质量保障原则 如何评估数据质量的好坏&#xff0c;业界有不同的标准&#xff0c;阿里主要从4个方面进行评估&#xff1a;完整性、准确性、一致性、及时性&#xff1b; 1.完整性 数据完整性是数据最基础的保障&#xff1b; 完整性&#xff1a;指数据的记录和信息是否…

Redis高级功能

目录 1.RDB 持久化 1.1生成RDB文件的命令 1.2RDB 文件结构 1.3RDB 文件结构 - database 部分 2.AOF 持久化 2.主从复制 2.1重同步 - 完整重同步 2.2重同步 - 部分重同步 2.2.1重同步 - 部分重同步的实现 - PSYNC的实现原理 3.复制的具体过程 3.Sentinel 哨兵模式 …

MySQL Workbench使用入门

软件介绍 MySQL Workbench 是可视化数据库设计软件&#xff0c;为数据库管理员和开发人员提供了一整套可视化的数据库操作环境&#xff0c;主要功能有数据库设计与模型建立、SQL 开发&#xff08;取代 MySQL Query Browser&#xff09;、数据库管理&#xff08;取代 MySQL Adm…

【Vue框架】Vue2中element-ui/mint-ui组件库——element-ui引入组件以及使用案例、mint-ui引入组件及使用案例

文章目录一、element-ui/mint-ui组件库1.1 element-ui使用步骤1.1.1 引入组件1.1.2 修改 .babelrc文件1.2 mint-ui的使用1.2.1 安装引入组件1.2.2 Mint-ui相关组件一、element-ui/mint-ui组件库 element-ui 提供了大量的组件&#xff0c;如&#xff1a;布局组件、表单组件、JS…

运行时内存数据区之虚拟机栈——动态链接、方法返回地址与一些附加信息

动态链接&#xff08;Dynamic Linking&#xff09;——指向运行时常量池的方法引用 每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能够实现动态链接(Dynamic Linking)。比如&#xff1a;invokedynamic指令。…

算法 DAY24 回溯 || 第77题. 组合 216.组合总和III 17.电话号码的字母组合 39. 组合总和

前置知识 回溯算法模板框架如下&#xff1a;void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtracking(路径&#xff0c;选择列表); // 递归回溯&am…

rk3568点亮LCD(lvds)

rk3568 Android11/12 适配 lvds 屏 LVDS&#xff08;Low Voltage Differential Signal&#xff09;即低电压差分信号。1994年由美国国家半导体&#xff08;NS&#xff09;公司为克服以TTL电平方式传输宽带高码率数据时功耗大、电磁干扰大等缺点而研制的一种数字视频信号传输方…

堆的实现

思维导图 堆的概念 普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储&#xff0c;需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事…

【LeetCode】剑指 Offer 50. 第一个只出现一次的字符 p243 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/ 1. 题目介绍&#xff08;50. 第一个只出现一次的字符&#xff09; 在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 s 只包含小写字母。 【测…

al文章生成-文章生成工具

ai文章生成器 AI文章生成器是一种利用人工智能和自然语言处理技术生成文章的工具。它使用先进的算法、机器学习和深度学习技术&#xff0c;深度挖掘和提取大量数据背后的信息&#xff0c;自主学习并合并新的信息&#xff0c;生成优质、原创的文章。 使用AI文章生成器的优点如下…

liunx mysql 主从同步设置 关键点

主库MySQL配置文件&#xff1a;该配置文件默认是在 /etc/my.cnf [mysqld] max_allowed_packet256M server-id1 log-binmysql-bin replicate-do-dbweb auto_increment_increment2 auto_increment_offset1 binlog_ignore_dbsys general_logon general_log_file/v…

Qt下载以及调试

1.概念 Qt是一个跨平台的基于C图形用户界面应用程序框架。 常见GUI&#xff1a; Qt&#xff1a;支持多平台&#xff1b;支持css&#xff1b;面向对象特性体现突出&#xff1b;发展趋势良好&#xff1b; MFC&#xff1a;仅在Windows&#xff1b;运行程序效率高&#xff1b;库安…

外包干了四年,感觉废了..

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…