[英]Interactive plotting in Pycharm debug console through matplotlib
[英]How to avoid PyCharm console crash “WARNING: QApplication was not created in the main() thread” when plotting with matplotlib?
在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()
它會打開一個窗口並崩潰。 我必須停止控制台並開始一個新的控制台。
當我在終端的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()
但是,如果我同時執行這兩項操作,它也會崩潰(甚至使用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庫以及使用*導入以及在第一次導入后在交互式控制台中運行相關。 我知道不建議使用通配符導入,但有時這樣做是為了更快地測試並且不那么冗長。
在網上尋找這個警告,我只發現了這些
https://github.com/matplotlib/matplotlib/issues/13296但我的情況似乎與多處理無關。 即使pycharm在幕后做某事,我也想知道它為什么會改變,因為我在一個月前沒有遇到任何問題;
抑制警告“QApplication未在main()線程中創建”以及與C ++相關的其他帖子,這不是我的情況;
警告:QApplication不是在main()線程中創建的 - >與pycharm相關,但是有一個不同於我的額外錯誤
哪個沒有多大幫助。 任何人都知道發生了什么以及如何解決它?
眼鏡:
我把這個問題發給JetBrains: https : //youtrack.jetbrains.com/issue/PY-36136
他們還找不到解決方案,但他們建議的解決方法如下:
禁用文件| 中工具窗口中的顯示圖 設置| 工具| Python Scientific 。
這對我有用,雖然它沒有在PyCharm窗口中繪圖。
您可以嘗試以下幾種方法:
首先,您可以嘗試更新Qt。 你可能有一些舊版本。 跑
print(plt.get_backend())
驗證您使用的是哪個后端。 如果您使用的是Qt4
,請嘗試使用Qt5
后端。
接下來,通過更新Qt5
到最新版本
pip install --upgrade PyQt5
此外,您可以嘗試放棄Qt
並切換到Tk
后端:添加
import matplotlib
matplotlib.use('TkAgg')
在導入pyplot
之前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.