Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3ecf087

Browse files
committed
FixAttributeError: module 'gi' has no attribute 'require_version'
On Arch Linux, automatic backend selection fails when[`at-spi2-core`](https://archlinux.org/packages/extra/x86_64/at-spi2-core/files/)is installed but[`python-gobject`](https://archlinux.org/packages/extra/x86_64/python-gobject/files/)is not. Detect this by importign `gi.require_version` directly.```python>>> import matplotlib.pyplot as plt>>> plt.plot([0, 1], [0, 1])Traceback (most recent call last): File "<python-input-1>", line 1, in <module> plt.plot([0, 1], [0, 1]) ~~~~~~~~^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 3838, in plot return gca().plot( ~~~^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 2785, in gca return gcf().gca() ~~~^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 1108, in gcf return figure() File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 1042, in figure manager = new_figure_manager( num, figsize=figsize, dpi=dpi, facecolor=facecolor, edgecolor=edgecolor, frameon=frameon, FigureClass=FigureClass, **kwargs) File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 551, in new_figure_manager _warn_if_gui_out_of_main_thread() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 528, in _warn_if_gui_out_of_main_thread canvas_class = cast(type[FigureCanvasBase], _get_backend_mod().FigureCanvas) ~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 369, in _get_backend_mod switch_backend(rcParams._get("backend")) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 411, in switch_backend switch_backend(candidate) ~~~~~~~~~~~~~~^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/matplotlib/pyplot.py", line 425, in switch_backend module = backend_registry.load_backend_module(newbackend) File "/usr/lib/python3.13/site-packages/matplotlib/backends/registry.py", line 317, in load_backend_module return importlib.import_module(module_name) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module return _bootstrap._gcd_import(name[level:], package, level) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "/usr/lib/python3.13/site-packages/matplotlib/backends/backend_gtk4agg.py", line 4, in <module> from . import backend_agg, backend_gtk4 File "/usr/lib/python3.13/site-packages/matplotlib/backends/backend_gtk4.py", line 19, in <module> gi.require_version("Gtk", "4.0") ^^^^^^^^^^^^^^^^^^AttributeError: module 'gi' has no attribute 'require_version'```Fixes#30654.
1 parent9b61b47 commit3ecf087

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

‎lib/matplotlib/backends/backend_gtk3.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
CloseEvent,KeyEvent,LocationEvent,MouseEvent,ResizeEvent)
1111

1212
try:
13-
importgi
13+
fromgiimportrequire_versionasgi_require_version
1414
exceptImportErroraserr:
1515
raiseImportError("The GTK3 backends require PyGObject")fromerr
1616

1717
try:
1818
# :raises ValueError: If module/version is already loaded, already
1919
# required, or unavailable.
20-
gi.require_version("Gtk","3.0")
20+
gi_require_version("Gtk","3.0")
2121
# Also require GioUnix to avoid PyGIWarning when Gio is imported
2222
# GioUnix is platform-specific and may not be available on all systems
2323
try:
24-
gi.require_version("GioUnix","2.0")
24+
gi_require_version("GioUnix","2.0")
2525
exceptValueError:
2626
# GioUnix is not available on this platform, which is fine
2727
pass

‎lib/matplotlib/backends/backend_gtk4.py‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@
99
KeyEvent,LocationEvent,MouseEvent,ResizeEvent,CloseEvent)
1010

1111
try:
12-
importgi
12+
fromgiimportrequire_versionasgi_require_version
1313
exceptImportErroraserr:
1414
raiseImportError("The GTK4 backends require PyGObject")fromerr
1515

1616
try:
1717
# :raises ValueError: If module/version is already loaded, already
1818
# required, or unavailable.
19-
gi.require_version("Gtk","4.0")
19+
gi_require_version("Gtk","4.0")
2020
# Also require GioUnix to avoid PyGIWarning when Gio is imported
2121
# GioUnix is platform-specific and may not be available on all systems
2222
try:
23-
gi.require_version("GioUnix","2.0")
23+
gi_require_version("GioUnix","2.0")
2424
exceptValueError:
2525
# GioUnix is not available on this platform, which is fine
2626
pass
@@ -29,6 +29,7 @@
2929
# auto-backend selection logic correctly skips.
3030
raiseImportError(e)frome
3131

32+
importgi
3233
fromgi.repositoryimportGio,GLib,Gtk,Gdk,GdkPixbuf
3334
from .import_backend_gtk
3435
from ._backend_gtkimport (# noqa: F401 # pylint: disable=W0611

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp