Как избежать сбоя консоли PyCharm «ПРЕДУПРЕЖДЕНИЕ: QApplication не был создан в потоке main ()» при печати с помощью matplotlib? - PullRequest
6 голосов
/ 04 мая 2019

В PyCharm, когда я пытаюсь построить что-то с помощью интерактивной консоли, например:

In[2]: from matplotlib.pyplot import *
In[3]: x = range(5)
In[4]: y = range(5,10)
In[5]: plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[5]: [<matplotlib.lines.Line2D at 0x7fade916a438>]
In[6]: show()

Он открывает окно и вылетает.Я должен остановить консоль и начать новую.

screenshot of the error

Это прекрасно работает, когда я запускаю что-то подобное в консоли ipython в моем терминале, ошибка, кажется, происходит только в Pycharm.

С другой стороны, если импортировать matplotlib с import matplotlib.pyplot as plt, он работает нормально:

In[2]: import matplotlib.pyplot as plt
In[3]: x = range(5)
In[4]: y = range(5,10)
In[5]: plt.plot(x,y)
Out[5]: [<matplotlib.lines.Line2D at 0x7fd3453b72e8>]
In[6]: plt.show()

Но если я сделаю и то, и другое, он тоже вылетит (даже вызывая функцию plot, используя plt.plot):

In[2]: from matplotlib.pyplot import *
In[3]: import matplotlib.pyplot as plt
In[4]: x = range(5)
In[5]: y = range(5,10)
In[6]: plt.plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[6]: [<matplotlib.lines.Line2D at 0x7fade916a438>]
In[7]: plt.show()

Кроме того, когда я запускаю все это в одной команде, это работает в первый раз.Но если я попытаюсь нанести график в другой раз, произойдет сбой:

In[2]: from matplotlib.pyplot import *
  ...: x = range(5)
  ...: y = range(5,10)
  ...: plot(x,y)
  ...: show()
In[3]: plot(x,y)
WARNING: QApplication was not created in the main() thread.
Out[3]: [<matplotlib.lines.Line2D at 0x7fc68a3009e8>]
In[4]: show()

Так что это связано с использованием библиотеки matplotlib при импорте с использованием * и с запуском в интерактивной консоли после первого импорта.,Я знаю, что импорт с использованием подстановочных знаков не рекомендуется, но иногда полезно сделать это для более быстрого тестирования и для того, чтобы быть менее многословным.

Глядя на это предупреждение в Интернете, я нашел только эти

, которая не сильно помогла.Кто-нибудь знает, что происходит и как это решить?

SPECS:

  • PyCharm 2019.1.2 (Professional Edition)
  • Build # PY-191.7141.48,построено 7 мая 2019 года
  • JRE: 11.0.2 + 9-b159.56 amd64
  • JVM: 64-битная виртуальная машина OpenJDK от JetBrains sro
  • Linux 4.15.0-50-generic
  • conda 4.6.14, с Python 3.7.3
  • Qt5

Ответы [ 2 ]

3 голосов
/ 27 мая 2019

Я отправил этот вопрос в JetBrains: https://youtrack.jetbrains.com/issue/PY-36136

Они пока не могут найти решение, но они предлагают следующее решение:

Отключить Показать графики вокно инструмента в Файл |Настройки |Инструменты |Python Scientific .

Это сработало для меня, хотя и не отображается в окне PyCharm.

1 голос
/ 27 мая 2019

Есть несколько вещей, которые вы можете попробовать:

Сначала вы можете попробовать обновить Qt. У вас может быть более старая версия. Run

print(plt.get_backend())

чтобы проверить, какой бэкэнд вы используете. Если вы используете Qt4, попробуйте Qt5 back end.

Далее, обновите Qt5 до последней версии через

pip install --upgrade PyQt5

Кроме того, вы можете попробовать отказаться от Qt и переключиться на Tk back end: добавить

import matplotlib
matplotlib.use('TkAgg')

до импорта pyplot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...