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

Ubuntu 22.04下Matplotlib使用GTK4Agg后端报错缺失gi._gi_cairo模块的解决咨询

Ubuntu 22.04下Matplotlib使用GTK4Agg后端报错缺失gi._gi_cairo模块的解决咨询

我在Ubuntu 22.04上运行以下极简测试代码时,遇到了Matplotlib GTK4Agg后端的报错:

import matplotlib as mpl
from matplotlib import pyplot as plt
mpl.use("GTK4Agg")

完整报错回溯信息如下:

niko@niko-ubuntu:~/myproj$ python script.py
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 176, in require_foreign
    _gi.require_foreign(namespace, symbol)
ModuleNotFoundError: No module named 'gi._gi_cairo'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/backends/_backend_gtk.py", line 23, in <module>
    gi.require_foreign("cairo")
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 178, in require_foreign
    raise ImportError(str(e))
ImportError: No module named 'gi._gi_cairo'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/niko/myproj/script.py", line 4, in <module>
    mpl.use("GTK4Agg")
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/__init__.py", line 1233, in use
    plt.switch_backend(name)
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/pyplot.py", line 271, in switch_backend
    backend_mod = importlib.import_module(
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/backends/backend_gtk4agg.py", line 4, in <module>
    from . import backend_agg, backend_gtk4
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/backends/backend_gtk4.py", line 26, in <module>
    from . import _backend_gtk
  File "/home/niko/.local/lib/python3.10/site-packages/matplotlib/backends/_backend_gtk.py", line 25, in <module>
    raise ImportError("Gtk-based backends require cairo") from e
ImportError: Gtk-based backends require cairo

已做的排查步骤

  • 首先根据报错最后一行提示,尝试安装pycairo,但系统提示已经安装:
niko@niko-ubuntu:~/myproj$ python -m pip install pycairo
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pycairo in /usr/lib/python3/dist-packages (1.20.1)
  • 验证cairo可以正常导入:
niko@niko-ubuntu:~/myproj$ ipython
>>> import cairo
>>> cairo.__file__
'/usr/lib/python3/dist-packages/cairo/__init__.py'
  • 进一步查看完整报错后,测试gi.require_foreign("cairo"),同样触发缺失gi._gi_cairo的报错:
>>> import gi
>>> gi.require_foreign("cairo")
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
File /usr/lib/python3/dist-packages/gi/__init__.py:176, in require_foreign(namespace, symbol)
175 try:
--> 176     _gi.require_foreign(namespace, symbol)
177 except Exception as e:
ModuleNotFoundError: No module named 'gi._gi_cairo'

During handling of the above exception, another exception occurred:
ImportError                               Traceback (most recent call last)
Cell In[4], line 1
----> 1 gi.require_foreign("cairo")

File /usr/lib/python3/dist-packages/gi/__init__.py:178, in require_foreign(namespace, symbol)
176     _gi.require_foreign(namespace, symbol)
177 except Exception as e:
--> 178     raise ImportError(str(e))
179 importlib.import_module('gi.repository', namespace)

ImportError: No module named 'gi._gi_cairo'

核心疑问

根据Matplotlib文档说明,GTK4Agg后端只需要PyGObject和pycairo,我已经可以正常导入gi和pycairo,但为什么还是会出现gi._gi_cairo模块缺失的问题?应该安装什么包来解决这个问题?

备注:内容来源于stack exchange,提问作者Niko Fohr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:07:59