Title: [Bug]: VSCode matplotlib interactive mode cannot import Qt bindings · Issue #25673 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: VSCode matplotlib interactive mode cannot import Qt bindings · Issue #25673 · matplotlib/matplotlib
X Title: [Bug]: VSCode matplotlib interactive mode cannot import Qt bindings · Issue #25673 · matplotlib/matplotlib
Description: Bug summary Running in VS Code interactive mode, %matplotlib qt throws an exception ImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2. However, PySide6 is installed. Error trace -------...
Open Graph Description: Bug summary Running in VS Code interactive mode, %matplotlib qt throws an exception ImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2. However, P...
X Description: Bug summary Running in VS Code interactive mode, %matplotlib qt throws an exception ImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2. However, P...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/25673
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: VSCode matplotlib interactive mode cannot import Qt bindings","articleBody":"### Bug summary\r\n\r\nRunning in VS Code interactive mode, `%matplotlib qt` throws an exception `ImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2`. However, PySide6 is installed. \r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eError trace\u003c/summary\u003e\r\n\r\n```\r\n---------------------------------------------------------------------------\r\nImportError Traceback (most recent call last)\r\n[c:\\Users\\nhl08\\code\\oct-invivo-analysis\\flatten.py](file:///C:/Users/nhl08/code/oct-invivo-analysis/flatten.py) in line 12\r\n [13](file:///c%3A/Users/nhl08/code/oct-invivo-analysis/flatten.py?line=12) import matplotlib.pyplot as plt\r\n [15](file:///c%3A/Users/nhl08/code/oct-invivo-analysis/flatten.py?line=14) from oct_utils import imshow, imshow2\r\n---\u003e [17](file:///c%3A/Users/nhl08/code/oct-invivo-analysis/flatten.py?line=16) get_ipython().run_line_magic('matplotlib', 'qt')\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2414](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py:2414), in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)\r\n [2412](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2411) kwargs['local_ns'] = self.get_local_scope(stack_depth)\r\n [2413](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2412) with self.builtin_trap:\r\n-\u003e [2414](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2413) result = fn(*args, **kwargs)\r\n [2416](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2415) # The code below prevents the output from being displayed\r\n [2417](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2416) # when using magics with decodator @output_can_be_silenced\r\n [2418](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2417) # when the last Python token in the expression is a ';'.\r\n [2419](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=2418) if getattr(fn, magic.MAGIC_OUTPUT_CAN_BE_SILENCED, False):\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\IPython\\core\\magics\\pylab.py:99](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/magics/pylab.py:99), in PylabMagics.matplotlib(self, line)\r\n [97](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/magics/pylab.py?line=96) print(\"Available matplotlib backends: %s\" % backends_list)\r\n [98](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/magics/pylab.py?line=97) else:\r\n---\u003e [99](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/magics/pylab.py?line=98) gui, backend = self.shell.enable_matplotlib(args.gui.lower() if isinstance(args.gui, str) else args.gui)\r\n [100](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/magics/pylab.py?line=99) self._show_matplotlib_backend(args.gui, backend)\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\IPython\\core\\interactiveshell.py:3600](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py:3600), in InteractiveShell.enable_matplotlib(self, gui)\r\n [3596](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3595) print('Warning: Cannot change to a different GUI toolkit: %s.'\r\n [3597](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3596) ' Using %s instead.' % (gui, self.pylab_gui_select))\r\n [3598](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3597) gui, backend = pt.find_gui_and_backend(self.pylab_gui_select)\r\n-\u003e [3600](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3599) pt.activate_matplotlib(backend)\r\n [3601](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3600) configure_inline_support(self, backend)\r\n [3603](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3602) # Now we must activate the gui pylab wants to use, and fix %run to take\r\n [3604](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/interactiveshell.py?line=3603) # plot updates into account\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\IPython\\core\\pylabtools.py:360](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py:360), in activate_matplotlib(backend)\r\n [355](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=354) # Due to circular imports, pyplot may be only partially initialised\r\n [356](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=355) # when this function runs.\r\n [357](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=356) # So avoid needing matplotlib attribute-lookup to access pyplot.\r\n [358](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=357) from matplotlib import pyplot as plt\r\n--\u003e [360](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=359) plt.switch_backend(backend)\r\n [362](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=361) plt.show._needmain = False\r\n [363](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=362) # We need to detect at runtime whether show() is called by the user.\r\n [364](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/IPython/core/pylabtools.py?line=363) # For this, we wrap it into a decorator which adds a 'called' flag.\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\matplotlib\\pyplot.py:271](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py:271), in switch_backend(newbackend)\r\n [268](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=267) # have to escape the switch on access logic\r\n [269](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=268) old_backend = dict.__getitem__(rcParams, 'backend')\r\n--\u003e [271](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=270) backend_mod = importlib.import_module(\r\n [272](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=271) cbook._backend_module_name(newbackend))\r\n [274](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=273) required_framework = _get_required_interactive_framework(backend_mod)\r\n [275](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/pyplot.py?line=274) if required_framework is not None:\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\importlib\\__init__.py:126](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/importlib/__init__.py:126), in import_module(name, package)\r\n [124](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/importlib/__init__.py?line=123) break\r\n [125](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/importlib/__init__.py?line=124) level += 1\r\n--\u003e [126](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/importlib/__init__.py?line=125) return _bootstrap._gcd_import(name[level:], package, level)\r\n\r\nFile :1050, in _gcd_import(name, package, level)\r\n\r\nFile :1027, in _find_and_load(name, import_)\r\n\r\nFile :1006, in _find_and_load_unlocked(name, import_)\r\n\r\nFile :688, in _load_unlocked(spec)\r\n\r\nFile :883, in exec_module(self, module)\r\n\r\nFile :241, in _call_with_frames_removed(f, *args, **kwds)\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\matplotlib\\backends\\backend_qt5agg.py:7](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py:7)\r\n [4](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=3) from .. import backends\r\n [6](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=5) backends._QT_FORCE_QT5_BINDING = True\r\n----\u003e [7](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=6) from .backend_qtagg import ( # noqa: F401, E402 # pylint: disable=W0611\r\n [8](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=7) _BackendQTAgg, FigureCanvasQTAgg, FigureManagerQT, NavigationToolbar2QT,\r\n [9](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=8) FigureCanvasAgg, FigureCanvasQT)\r\n [12](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=11) @_BackendQTAgg.export\r\n [13](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=12) class _BackendQT5Agg(_BackendQTAgg):\r\n [14](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qt5agg.py?line=13) pass\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\matplotlib\\backends\\backend_qtagg.py:9](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py:9)\r\n [5](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py?line=4) import ctypes\r\n [7](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py?line=6) from matplotlib.transforms import Bbox\r\n----\u003e [9](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py?line=8) from .qt_compat import QT_API, _enum\r\n [10](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py?line=9) from .backend_agg import FigureCanvasAgg\r\n [11](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/backend_qtagg.py?line=10) from .backend_qt import QtCore, QtGui, _BackendQT, FigureCanvasQT\r\n\r\nFile [c:\\Users\\nhl08\\miniconda3\\envs\\sim\\lib\\site-packages\\matplotlib\\backends\\qt_compat.py:135](file:///C:/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py:135)\r\n [133](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=132) break\r\n [134](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=133) else:\r\n--\u003e [135](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=134) raise ImportError(\r\n [136](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=135) \"Failed to import any of the following Qt binding modules: {}\"\r\n [137](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=136) .format(\", \".join(_ETS.values())))\r\n [138](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=137) else: # We should not get there.\r\n [139](file:///c%3A/Users/nhl08/miniconda3/envs/sim/lib/site-packages/matplotlib/backends/qt_compat.py?line=138) raise AssertionError(f\"Unexpected QT_API: {QT_API}\")\r\n\r\nImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n### Code for reproduction\r\n\r\nRun in a VS Code interactive cell\r\n\r\n```python\r\n\r\n\r\n# %%\r\nimport matplotlib.pyplot as plt\r\n\r\n%matplotlib qt\r\n```\r\n\r\n### Additional information\r\n\r\nipykernel: 6.22.0\r\nipython: 8.12.0\r\nipywidgets: 8.0.6\r\n\r\n### Operating system\r\n\r\nWindows 10 and Windows 11 (2 separate computers)\r\n\r\n### Matplotlib Version\r\n\r\n3.7.1\r\n\r\n### Matplotlib Backend\r\n\r\nQt5Agg\r\n\r\n### Python version\r\n\r\n3.10.10\r\n\r\n### Jupyter version\r\n\r\n_No response_\r\n\r\n### Installation\r\n\r\npip","author":{"url":"https://github.com/kwsp","@type":"Person","name":"kwsp"},"datePublished":"2023-04-13T00:11:55.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":22},"url":"https://github.com/25673/matplotlib/issues/25673"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:6a7280de-7b55-cffc-8e22-01fa687bb1c8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E6BA:171DD4:80EA4F:ACDC9A:6A52718F |
| html-safe-nonce | f814d6c6e77483c71af5d530dcef43df9d9c09be51cba3a81ab0bf915db8e388 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNkJBOjE3MURENDo4MEVBNEY6QUNEQzlBOjZBNTI3MThGIiwidmlzaXRvcl9pZCI6IjQ2OTAzMzI4NTQyOTAzNzkxNTEiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | d71966555297b6ee97408b416bcd2cbb541d4b649683e14e521781ee1fc82f5a |
| hovercard-subject-tag | issue:1665441305 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/25673/issue_layout |
| twitter:image | https://opengraph.githubassets.com/cd247edb4f544dc2dceb06a2cfce9c628f2c2125ae77e55c0693808de528f217/matplotlib/matplotlib/issues/25673 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/cd247edb4f544dc2dceb06a2cfce9c628f2c2125ae77e55c0693808de528f217/matplotlib/matplotlib/issues/25673 |
| og:image:alt | Bug summary Running in VS Code interactive mode, %matplotlib qt throws an exception ImportError: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2. However, P... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | kwsp |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width