При использовании matplotlib для отображения графики графика не отвечает, и появляется сообщение об ошибке: ModuleNotFoundError: нет модуля с именем «imp»

При использовании matplotlib в коде Visual Studio для отображения графики графика не отвечает, и появляется следующее сообщение об ошибке:

Failed to enable GUI event loop integration for 'qt'
Traceback (most recent call last):
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\matplotlibtools.py", line 30, in do_enable_gui
    enable_gui(guiname)
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\inputhook.py", line 540, in enable_gui
    return gui_hook(app)
           ^^^^^^^^^^^^^
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\inputhook.py", line 176, in enable_qt
    from pydev_ipython.qt_for_kernel import QT_API, QT_API_PYQT5
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\qt_for_kernel.py", line 116, in <module>
    QtCore, QtGui, QtSvg, QT_API = load_qt(api_opts)
                                   ^^^^^^^^^^^^^^^^^
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\qt_loaders.py", line 276, in load_qt
    if not can_import(api):
           ^^^^^^^^^^^^^^^
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\qt_loaders.py", line 152, in can_import
    if not has_binding(api):
           ^^^^^^^^^^^^^^^^
  File "~\.vscode\extensions\ms-python.debugpy-2024.8.0-win32-x64\bundled\libs\debugpy\_vendored\pydevd\pydev_ipython\qt_loaders.py", line 115, in has_binding
    import imp
ModuleNotFoundError: No module named 'imp'
Backend QtAgg is interactive backend. Turning interactive mode on.

Мой код выглядит следующим образом (исходный код был обработан, код, который может вызвать эту ошибку, выглядит следующим образом):

import torch
import matplotlib.pyplot as plt

def main():
  data = torch.arange(1, 10)
  plt.plot(data)
  plt.title('label name')
  # ……

if __name__ == '__main__':
  main()

При использовании plt.ion() это не сработало.

Привет, Хуэй Сяо, рад узнать, что вы нашли решение этой проблемы! вы можете нажать «✔», чтобы пометить его как ответ и изменить его статус на Отвечено. Это также поможет другим решить подобную проблему. См. также могу ли я ответить на свой вопрос?.. , Напоминаю :)

MingJie-MSFT 09.08.2024 04:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это может быть связано с неправильной настройкой бэкэнда matplotlib. В моем коде для бэкэнда matplotlib установлено значение «TkAgg», который, как правило, является наиболее широко поддерживаемым графическим бэкендом.

Я попробовал это в своем коде, и это сработало. Это может быть вызвано ошибкой vscode:

import matplotlib
matplotlib.use('TkAgg')
plt.ion()

Общий код выглядит следующим образом:

import torch
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('TkAgg')
plt.ion()

def main():
  data = torch.arange(1, 10)
  plt.plot(data)
  plt.title('label name')
  # ……

if __name__ == '__main__':
  main()

Другие вопросы по теме