一个月没打开代码,运行时报错:/opt/anaconda3/envs/pyqt_env/bin/python /home/yqp/PycharmProjects/PYQT/3D.py QObject::moveToThread: Current thread (0x63821dc6b3c0) is not the object's thread (0x63821fdb4f30). Cannot move to target thread (0x63821dc6b3c0) qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/opt/anaconda3/envs/pyqt_env/lib/python3.7/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. Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc, webgl. Process finished with exit code 134 (interrupted by signal 6: SIGABRT)
OpenCV 在被导入时,会偷偷把自己的 Qt 插件路径 “告诉” Qt;Qt 启动时会按 “OpenCV 插件路径 → 系统插件路径” 的顺序找 xcb 插件;
第一步:彻底重置并激活环境
# 1. 彻底退出所有 conda 环境(执行多次直到无 (base)/(pyqt_env) 前缀)
conda deactivate
conda deactivate
# 2. 重新注册 conda 函数(修复环境激活失效问题)
source /opt/anaconda3/etc/profile.d/conda.sh
# 3. 重新激活 pyqt_env(确保是“真激活”)
conda activate pyqt_env
# 4. 关键验证(必须通过)
which python
# ✅ 输出必须是:/opt/anaconda3/envs/pyqt_env/bin/python
# 5. 测试 PyQt5 可导入
python -c "from PyQt5.QtWidgets import QApplication; print('PyQt5 OK')"
# ✅ 输出:PyQt5 OK
第二步:物理屏蔽 OpenCV 的 Qt 插件(根除冲突)
# 进入 cv2 插件目录,重命名 Qt 插件文件夹(仅执行一次)
cd /opt/anaconda3/envs/pyqt_env/lib/python3.7/site-packages/cv2/
mv qt qt_bak # 备份并禁用 OpenCV 自带的 Qt 插件
第三步:修改代码开头的配置(仅保留核心)
确保代码第一行就指定系统 Qt 插件路径,避免被覆盖:
# ========== 第一行必须是这个配置,绝对不能晚! ==========
import os
import sys
# 强制指定系统原生 Qt 插件路径(兼容系统 xcb 库)
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms"
os.environ['QT_PLUGIN_PATH'] = "" # 清空其他插件路径
os.environ['LD_LIBRARY_PATH'] = "/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
# ========== 之后再导入所有库 ==========
import cv2
import numpy as np
import torch
# ... 其余代码不变
5083

被折叠的 条评论
为什么被折叠?



