- 作者:
- 分类:知识&开发->语言->Python
- 阅读:6299
- 点赞:9
- 版权:CC BY-SA 4.0
- 创建:2022-02-23
- 更新:2022-08-27
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/407
原文链接(持续更新):https://neucrack.com/p/407
报错内容
qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “/home/*/.local/lib/python3.9/site-packages/cv2/qt/plugins” even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
原因和解决方法
- 一种是因为没有安装包, 比如 系统没装 libxcb 包呀, 或者版本依赖等等啊,百度一下按照方法装一下包,更新一下软件等就 ok。
方法:
先打开调试信息:
然后再执行程序,看报错信息,比如export QT_DEBUG_PLUGINS=1
可知,PyQt5/Qt5/plugins/platforms/libqxcb.so: (libxcb-icccm.so.4: cannot open shared object file: No such file or directory)"
libxcb-icccm4
没有找到,装一下即可
比如又报错找不到sudo apt install libxcb-icccm4
libxcb-image
sudo apt install libxcb-icccm4 libxcb-image0
比如 pyqtgragh 依赖的
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends \
xvfb \
x11-utils \
libxkbcommon-x11-0 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-xkb1 \
libegl1-mesa \
libxcb-xinerama0 \
libglib2.0-0 \
libopengl0
可以参考 https://github.com/j9ac9k/pyqtgraph/blob/master/.github/workflows/main.yml
- 另外一种是依赖问题, 比如 pyqt5 和 opencv(cv2)一起用,就会报这个错,两种解决方法
- 第一种, 直接将 python 包中的
site-packages/cv2/qt/plugins/platforms
里面有个libxcb.a
文件 删除即可 - 第二种,根据这里 的方法, 设置一下环境变量也ok
- 第一种, 直接将 python 包中的
import os
from PyQt5.QtCore import QLibraryInfo
# from PySide2.QtCore import QLibraryInfo
import cv2
os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = QLibraryInfo.location(
QLibraryInfo.PluginsPath
)
qt.qpa.xcb: could not connect to display
估计是代码里面哪里调用了界面显示,解决办法是找到显示的地方删除, 比如 cv2.imshow()
, 如果不是自己写的代码,很难找到显示的地方,那么想办法虚拟一个 xserver,跳过显示即可,使用 xvfb 即可,在命令前加就好了
xvfb-run python3 -m pyqtgraph.util.get_resolution
可以自定义参数
xvfb-run --server-args="-screen 0, 1920x1200x24 -ac +extension GLX +render -noreset" python -m pyqtgraph.util.get_resolution
参考 pyqtgraph 的 ci 做法: https://github.com/j9ac9k/pyqtgraph/blob/master/.github/workflows/main.yml
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends \
xvfb \
x11-utils \
libxkbcommon-x11-0 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-xkb1 \
libegl1-mesa \
libxcb-xinerama0 \
libglib2.0-0 \
libopengl0