You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一虚拟环境中cv2与PyQt5共存导入报错的解决求助

问题:Ubuntu 20.04虚拟环境中cv2与PyQt5共存时的导入错误

环境配置

  • 系统:Ubuntu 20.04.5 LTS
  • 虚拟环境:Anaconda(Python 3.7)
  • 依赖安装方式:
    • conda安装 opencv==4.6.0
    • pip安装 pyqt5==5.15.9
  • 当前系统libstdc++.so.6版本:6.0.29

报错情况

1. 先导入QtCore再导入cv2

代码:

from PyQt5 import QtCore
import cv2

报错信息:

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/pc/anaconda3/envs/MatchNMix_env/lib/python3.7/site-packages/../../libopencv_gapi.so.406)

2. 先导入cv2再导入QtCore

代码:

import cv2
from PyQt5 import QtCore

报错信息:

ImportError: /home/pc/anaconda3/envs/MatchNMix_env/lib/python3.7/site-packages/PyQt5/QtCore.abi3.so: undefined symbol: _ZdaPvm, version Qt_5

解决方案

方案1:通过conda统一安装PyQt5

pip安装的PyQt5与conda安装的opencv依赖库版本不兼容,改用conda安装PyQt5:

  1. 卸载现有PyQt5:
pip uninstall pyqt5 -y
  1. conda安装对应版本PyQt5:
conda install pyqt=5.15.9 -c conda-forge
  1. 重新测试两种导入顺序。

方案2:升级系统libstdc++库

Ubuntu 20.04默认libstdc++缺少GLIBCXX_3.4.30,从虚拟环境提取高版本库替换:

  1. 复制虚拟环境中的高版本libstdc++:
cp /home/pc/anaconda3/envs/MatchNMix_env/lib/libstdc++.so.6.0.30 /lib/x86_64-linux-gnu/
  1. 更新系统软链接:
cd /lib/x86_64-linux-gnu
sudo rm libstdc++.so.6
sudo ln -s libstdc++.so.6.0.30 libstdc++.so.6

注意:操作前备份原软链接,避免影响系统其他程序。

方案3:设置环境变量优先加载虚拟环境库

运行脚本前指定LD_LIBRARY_PATH,让系统优先使用虚拟环境的依赖库:

export LD_LIBRARY_PATH=/home/pc/anaconda3/envs/MatchNMix_env/lib:$LD_LIBRARY_PATH

或在Python脚本开头添加:

import os
os.environ['LD_LIBRARY_PATH'] = '/home/pc/anaconda3/envs/MatchNMix_env/lib:' + os.environ.get('LD_LIBRARY_PATH', '')

之后再导入cv2和PyQt5。

方案4:降级opencv到兼容版本

opencv4.6.0依赖较高版本libstdc++,降级到适配Ubuntu 20.04的版本:

  1. 卸载现有opencv:
conda uninstall opencv -y
  1. 安装opencv4.5.5:
conda install opencv=4.5.5 -c conda-forge
  1. 测试导入是否正常。

内容的提问来源于stack exchange,提问作者Awal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:45:29