NVIDIA Jetson运行PyQt6出现qt.glx错误的解决办法
问题
设备:NVIDIA Jetson Xavier NX Developer Kit 8GB
系统:Ubuntu 20.04 / JetPack 5.1.3 / L4T 35.5.0
环境:Python 3.8(Default) / PyQt6.7.1 / PyQt6-Qt6 6.7.2
由于最近写的一个PyQt6程序(使用PyQt6库)在GNOME桌面上有图形问题(无法正确显示视频播放器画面),因此切换到了xfce4桌面,但运行的时候GUI完全不显示了,报错内容如下:
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile QSurfaceFormat::NoProfile)
Could not initialize GLX
Aborted (core dumped)
解决方法
此问题是由于默认的QT_XCB_GL_INTEGRATION=glx
导致的,将其切换为xcb_egl
即可解决(如果仍然不行,可以切换为none
尝试,但此时将完全使用CPU而不会使用GPU,在资源受限的机器上会造成CPU高负载影响其他任务)
export QT_XCB_GL_INTEGRATION=xcb_egl # 切换为xcb_egl
python3 main.py # 尝试运行
但直接export只能临时解决,若要固化此更改,需要修改~/.bashrc
:
nano ~/.bashrc
在最后填入:
export QT_XCB_GL_INTEGRATION=xcb_egl
保存退出。
立即生效:
source ~/.bashrc
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,您可以在不商用的情况下,免费转载或修改本文内容,完整转载请注明来自 Patrick's Blog
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果