我正在使用Windows 7 64位和PyCharm 2016.3.2,构建#PY-163.10154.50,建于2016年12月28日。
我有一个非常简单的脚本Test.py
,如下所示:
import matplotlib.pyplot as plt
import ipdb
plt.ion()
x = [1, 2, 3]
plt.figure()
plt.plot(x)
plt.show()
ipdb.set_trace()
当我使用命令python Test.py
从Windows终端执行脚本时,脚本运行正常:我被带到ipdb控制台,在那里我可以创建并绘制新变量,同时与生成的绘图进行交互。另外,如果我首先在Windows终端中打开iPython并调用ipython
然后在iPython控制台中调用exec(compile(open('Test.py', "rb").read(), 'Test3.py', 'exec'))
来运行脚本,它仍然运行良好。最后,当我从PyCharm中的Terminal接口以这两种方式执行脚本时,它仍然运行正常。
当我想从PyCharm中的Python Console界面运行脚本时,我遇到了问题。控制台将打开,并显示一条消息
" E:\ Program Files \ Anaconda3 \ python.exe" " E:\ Program Files (x86)\ JetBrains \ PyCharm 2016.3.2 \ helpers \ pydev \ pydevconsole.py"
并告诉我它正在运行带有Python 3.5.2的IPython 5.1.0 Anaconda 4.2.0作为翻译。当我在此控制台中使用上面相同的exec
命令时,代码会在断点处运行,但图形不会渲染,并且图形窗口会冻结。请看下图:
如果我使用plt.pause(10)
,图形呈现但在10秒后再次冻结。在这10秒钟内,我可以与图形进行交互,但是我无法使用代码创建或探测任何变量(我在PyCharm弹出窗口提示前一个命令仍在运行)。此外,当plt.pause
完成时,我会收到警告:
E:\ Program Files \ Anaconda3 \ lib \ site-packages \ matplotlib \ backend_bases.py:2437:MatplotlibDeprecationWarning:使用默认事件循环,直到实现特定于此GUI的功能 warnings.warn(str,mplDeprecation)
在任何时候,如果我尝试从ipdb控制台创建新数据,它们也不会渲染,窗口将保持冻结状态,直到我执行plt.pause
(即plt.pause
必须在任何数字后执行已创建或修改。)
如何解决此问题,以便在与绘图和创建/修改变量交互时,可以利用PyCharm中Python控制台界面的便利性?