¶问题
使用plotly
绘图生成图片的时候遇到如下报错:
1 | qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "" |
¶解决过程
¶尝试一
1 | 指定环境变量`QT_QPA_PLATFORM_PLUGIN_PATH`。 |
报错变为:
1 | qt.core.plugin.loader: In /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so: |
¶尝试二
考虑python
程序用了PySide6
包和QT6相关,考虑是不是因为这个版本不匹配,于是安装了Qt6并将环境变量指向Qt6的位置:
1 | sudo apt install qt6-base-dev qt6-base-dev-tools |
报错变为:
1 | qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/lib/x86_64-linux-gnu/qt6/plugins/platforms" even though it was found. |
再考虑是不是python包版本不匹配,于是强制升级了PySide6
和PyQt6
。
报错变为:
1 | File "/anaconda3/lib/python3.9/site-packages/matplotlib/_api/deprecation.py", line 454, in wrapper |
发现涉及到matplotlib
,同样升级之,错误变为:
1 | qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/lib/x86_64-linux-gnu/qt6/plugins/platforms" even though it was found. |
百思不得其解。
¶解决
网上找到设置export QT_DEBUG_PLUGINS=1
后可以让Qt输出详细debug信息,设置后运行程序输出:
1 | qt.core.plugin.factoryloader: Got keys from plugin meta data QList("minimalegl") |
发现
- 实际上被使用的是PyQt6自带的插件动态库,并没有用
QT_QPA_PLATFORM_PLUGIN_PATH
指定的系统库。 - 错误原因是缺失
libxcb-cursor.so.0
。
于是安装libxcb-cursor
1 | sudo apt install libxcb-cursor* |
再次运行发现不再报错。问题解决。
删除掉QT_DEBUG_PLUGINS
和QT_QPA_PLATFORM_PLUGIN_PATH
环境变量(因为实际上并没有用系统的Qt6,所以QT_QPA_PLATFORM_PLUGIN_PATH
删掉不影响什么)。