Ubuntu20.04下pip3安装OpenCV4后导入cv2出现未定义符号错误求助
解决Ubuntu 20.04下pip安装OpenCV4导入时的
undefined symbol: cairo_tag_end错误 这个错误的核心原因是系统中librsvg-2.so.2库依赖的Cairo版本不兼容,缺少cairo_tag_end这个符号——通常是因为系统自带的Cairo库版本过旧,或者pip安装的OpenCV引用了错误的库路径导致的。下面是几个逐步排查修复的方案:
方案1:修复系统依赖库
首先尝试重新安装系统的Cairo和librsvg库,修复可能的损坏或版本不匹配:
- 更新软件源并重新安装依赖:
sudo apt update sudo apt install --reinstall libcairo2 librsvg2-2 - 安装完成后,打开Python3终端测试:
python3 -c "import cv2; print(cv2.__version__)"
方案2:改用系统自带的OpenCV版本
pip安装的OpenCV有时会和系统库存在兼容性问题,改用apt安装的系统版本会更稳定:
- 先卸载pip安装的OpenCV:
pip3 uninstall -y opencv-python opencv-contrib-python - 安装系统版本的OpenCV:
sudo apt install python3-opencv - 再次测试导入是否正常:
python3 -c "import cv2; print(cv2.__version__)"
方案3:更新系统库后重新安装pip版OpenCV
如果坚持要用pip安装的版本,先确保系统所有库都是最新的:
- 全面更新系统:
sudo apt full-upgrade - 强制重装pip版OpenCV:
pip3 install opencv-python --force-reinstall - 测试导入是否成功。
额外排查:检查库路径优先级
如果上面的方案都没用,可能是LD_LIBRARY_PATH环境变量导致库加载顺序异常,先把系统标准库路径设为最高优先级:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
然后再测试import cv2。如果有效,可以把这条命令添加到~/.bashrc里永久生效。
内容的提问来源于stack exchange,提问作者Jordan Hall
相关产品推荐
相关产品推荐

