如何解决ImportError:libatk-1.0.so.0未定义符号g_log_structured_standard
解决OpenCV导入时
undefined symbol: g_log_structured_standard错误 先梳理下你的环境情况:
- 在MacBook Pro的VirtualBox虚拟机中运行Linux系统
- 安装了Anaconda
- 通过
conda install -c menpo opencv安装OpenCV - 使用的Python版本:
Python 2.7.14 |Anaconda, Inc.| (default, Dec 7 2017, 17:05:42) [GCC 7.2.0] on linux2
导入OpenCV时碰到的错误:
Traceback (most recent call last):
File "", line 1, in
ImportError: /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0: undefined symbol: g_log_structured_standard
这个错误我之前也遇到过,本质是系统的glibc库和Anaconda环境里的依赖库版本不兼容,导致链接时找不到对应的符号。下面给你几个可行的解决办法:
方法1:换用conda-forge频道重新安装OpenCV
menpo频道的OpenCV包有时候兼容性不如conda-forge,试试以下步骤:
- 先更新conda到最新版本,确保环境依赖是最新状态:
conda update -n base conda - 卸载当前已安装的OpenCV:
conda remove opencv - 从conda-forge频道重新安装OpenCV:
conda install -c conda-forge opencv
安装完成后重启Python尝试导入cv2,大概率能解决问题。
方法2:临时指定LD_PRELOAD环境变量
如果方法1暂时没效果,可以试试临时加载系统的glib库来规避冲突:
在终端执行下面的命令后,再启动Python:
export LD_PRELOAD=/lib/x86_64-linux-gnu/libglib-2.0.so.0
这是临时方案,每次打开新终端都需要重新执行,适合快速验证问题根源。
方法3:创建干净的conda环境
如果你的现有环境依赖过于混乱,干脆新建一个专门的环境来运行OpenCV:
- 创建Python2.7版本的新环境:
conda create -n py27_opencv python=2.7 - 激活这个新环境:
source activate py27_opencv - 在新环境中安装conda-forge的OpenCV:
conda install -c conda-forge opencv
干净的环境能避免很多依赖冲突问题,推荐长期使用这种方式。
内容的提问来源于stack exchange,提问作者daniel_hck
相关产品推荐
相关产品推荐

