通过Eclipse PyDev进行交互式matplotlib

Mic*_*ael 6 python eclipse matplotlib pydev ipython

这是这个交互式matplolib通过eclipse线程的一个跟进,大约2岁,我想知道在此期间是否有任何进展.

我在Eclipse PyDev的控制台窗口中运行IPython控制台,但我无法使用matplotlib获得相同的交互式绘图功能,就像我 Eclipse PyDev 的(Windows)命令提示符中运行IPython一样.以下是两者的比较方式:

A)在Eclipse PyDev外部的shell中运行IPython

  1. 使用"ipython --pylab"在Windows命令提示符下运行IPython
  2. 在IPython控制台中输入"plot([1,2,3])".这将打开一个图形图窗口,IPython控制台已准备好进一步命令(无需关闭图形图窗口).
  3. 例如,我可以输入"xlabel('years')"这将更新我的图形图窗口.

B)在Eclipse PyDev中的交互式控制台中运行IPython在Eclipse PyDev 中的IPython交互式控制台中输入以下内容:

  1. "来自pylab import*"
  2. "plot([1,2,3])" - >图形图窗口不显示.
  3. 我必须输入"show()"来打开图形图窗口.但现在的问题是,只要我保持图形图窗口打开,IPython控制台就不接受任何新命令.
  4. 所以我关闭图形图窗口,输入"xlabel('years')",然后再输入"show()".这将重新打开图形图窗口,其中"years"作为我的轴标签,但是图表本身是空的,不再显示[1,2,3]数据.

有了这种行为,A)显然优于B),但我想继续在Eclipse PyDev中工作,因为我喜欢在我的屏幕上总是有变量列表(无需运行命令来显示所有变量,比如在运行IPython表单时)一个Windows shell).使用Wicked Shell,如其他线程所示,不起作用(IPython在Wicked Shell中无法正常工作).

如何在Eclipse PyDev中配置IPython,以便它显示相同的交互行为,就像我在Windows命令提示符下运行它一样?

小智 7

您可以通过在PyDev首选项中为交互式控制台选择GUI来解决此问题.

Eclipse - > Window - > Preferences - > Pydev - > Interactive Console - >启用GUI事件循环集成.

就我而言,我选择了PyQt(qt/qt4)


Spo*_*ock 4

对于可能不完整的答案表示歉意,但希望我能够阐明这个问题。

我相信OP所描述的行为是正常行为。事实上,从命令行 ipython 开始,导入 pylab 并发出绘图命令会产生所描述的阻塞行为,因此这与 pydev 或 eclipse 无关。事实是 matplotlib 中的 show 在交互模式下是阻塞的;当您在以“ipython --pylab”启动的 ipython 会话中使用 matplotlib 时,您正在利用 ipython 开发人员围绕 matplotlib 为您所做的一些“技巧”,从而允许同时具有交互模式和非阻塞调用。然而,导入 pylab 不足以应用这些“技巧”。PyDev 似乎不允许解释器调用标志,因此无法直接调用“ipython --pylab”。

幸运的是,ipython 有一个特殊的命令“pylab”,即使解释器不是使用 pylab 标志启动的,它也会应用 hacks 并导入 pylab。因此,您可以尝试在控制台中输入“pylab”(实际上,您甚至可以自定义 pydev 控制台,以便自动完成),您应该会获得所需的行为。然而,我必须报告,虽然这对我来说在从命令行启动的 ipython 会话中工作得很好,但当我尝试从 Eclipse 内部执行相同操作时,会出现问题。该命令不会阻塞,我得到了 python 图标,但 matplotlib 窗口没有显示。作为记录,我使用的是运行 Snow Leopard 的 Mac。我无法判断OP似乎正在使用的Windows中是否也发生同样的问题。