暮尘十六
暮尘十六
Published on 2025-10-27 / 3 Visits
0
0

Python报错:libGL error: MESA-LOADER: failed to open iris

系统配置

  • 操作系统:Ubuntu 22.04.5 LTS

  • Python:3.10

  • Conda环境:Miniforge3

Python报错:libGL error: MESA-LOADER: failed to open iris

问题状况:

libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: 无法打开共享目标文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: 无法打开共享目标文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: 无法打开共享目标文件: 没有那个文件或目录 (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast

问题分析

根据提示,发现是在 /usr/lib/dri 路径下没有找到系统驱动,但是在 /usr/lib/x86_64-linux-gnu/dri 路径下是可以找到相关驱动的。

解决方案

因此可以通过建立软连接的方式来解决问题,执行以下命令:

cd /usr/lib
sudo mkdir ./dri
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/iris_dri.so /usr/lib/dri/
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/
Anaconda报错:libGL error: MESA-LOADER: failed to open iris

问题状况

接着再次运行代码,发现程序又开始报错:

libGL error: MESA-LOADER: failed to open iris: /home/myur/software/anaconda3/envs/py38/lib/python3.8/site-packages/PIL/../../../././libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open iris: /home/myur/software/anaconda3/envs/py38/lib/python3.8/site-packages/PIL/../../../././libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast: /home/myur/software/anaconda3/envs/py38/lib/python3.8/site-packages/PIL/../../../././libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-15.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast

问题分析

根据提示发现是在/home/myur/software/anaconda3/envs/py38/lib/python3.8/site-packages/PIL/../../../././libstdc++.so.6路径下的文件中没有找到 GLIBCXX_3.4.30 版本。

经查阅网络文档及各方博客后,发现问题是因为在该conda环境下的libstdcxx-ng版本不够高,没有 GLIBCXX_3.4.30 版本所导致的。

我们首先执行以下命令来查看GLIBCXX版本信息:

strings /home/myur/software/anaconda3/envs/py38/lib/libstdc++.so.6 | grep GLIBCXX

没有发现文件中存在 GLIBCXX_3.4.30 版本:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
……
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29

通过以下命令先查看该conda环境下libstdcxx-ng版本号是多少(注:本conda环境名为py38,请自行将环境名替换成自己的conda环境名):

conda list -n py310 | grep libstdcxx-ng

发现该conda环境下libstdcxx-ng版本号为11.2.0。

libstdcxx-ng              11.2.0               h1234567_1

解决方案

Step1 添加下载源

直接通过默认源是无法升级安装libstdcxx-ng的,需要先添加conda-forge源,执行以下命令:

conda config --add channels conda-forge

可以执行以下命令来查看下载源:

conda config --show channels

Step2 升级libstdcxx-ng

激活需要升级安装libstdcxx-ng的环境,执行以下命令:

conda activate py310

激活环境后,执行升级安装的命令:

conda install libstdcxx-ng=12.1.0

等待升级安装完成后,再执行以下命令来查看GLIBCXX版本信息:

strings /home/myur/software/anaconda3/envs/py38/lib/libstdc++.so.6 | grep GLIBCXX

发现出现了 GLIBCXX_3.4.30 版本:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
……
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30

此时再次运行程序,程序不再报错。

另一个解决思路

参照文中【Python报错:libGL error: MESA-LOADER: failed to open iris】解决方案,在对应的目录下,构建软链接。

由于本文档中的问题已解决,不再尝试。

参考文章

https://zhuanlan.zhihu.com/p/538877347

https://www.bilibili.com/opus/702394618087473169

https://blog.csdn.net/peng_258/article/details/132500323

https://blog.csdn.net/quintus0505/article/details/130758022


Comment