使用matplotlib时,Emacs中的Python shell会冻结

时间:2013-06-14 20:51:50

标签: python emacs matplotlib

我之前认为这是IPython的问题,但今天我再次测试,这就是我做的:

  1. 在cmd窗口中运行emacs -Q
  2. 打开.py文件
  3. M-x,然后运行python-shell-switch-to-shellRETRET。然后我准备好了Python shell
  4. 我输入以下代码:
  5. Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import matplotlib.pyplot as plt
    >>> plt.ion()
    >>> plt.plot([1,2,3])
    [<matplotlib.lines.Line2D object at 0x03068610>]
    >>>
    

    实际上在此之后,没有数字显示,并且shell被冻结,例如,当我输入时:

    >>> print("hello")
    

    什么都没发生......我没有测试过其他绘图工具,但matplotlib。我不知道这是不是一个bug。我搜索了一段时间,这里和谷歌,但没有运气。我的系统是:Windows 7下的Windows Emacs 24.3 32位。如果其他人可以复制与此相同的问题,我会将此报告为错误。

    我使用IPython作为Python shell:

    C:/Python27/python.exe -i C:/Python27/Scripts/ipython-script.py --pylab
    

    然后,我按预期输入figure(); plot([1,2,3])图形弹出并冻结。然后我做了C-c C-d运行comint-send-eof,这个数字实际上是更新!但我的IPython shell会话也终止了以下消息:

    In [6]:
    Do you really want to exit ([y]/n)?
    Traceback (most recent call last):
    File "C:/Python27/Scripts/ipython-script.py", line 9, in <module>
    load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
    SystemExit
    
    If you suspect this is an IPython bug, please report it at:
    https://github.com/ipython/ipython/issues
    or send an email to the mailing list at ipython-dev@scipy.org
    
    You can print a more detailed traceback right now with "%tb", or use "%debug"
    to interactively debug it.
    
    Extra-detailed tracebacks for bug-reporting purposes can be enabled via:
    %config Application.verbose_crash=True
    

    这里有什么有用的线索吗?!

2 个答案:

答案 0 :(得分:4)

一个解决方案是:

(setq python-shell-interpreter "C:\\YourPython3Dist\\python.exe"
      python-shell-interpreter-args "-i C:\\YourPython3Dist\\Scripts\\ipython3-script.py console --pylab=qt")

ipython-script.py调用中的参数console是重要的!

在Python 3中使用qt后端它对我有用。我不知道它如何与py 2.7一起使用。 (如果ipytho-script.py

支持这些参数,应该没问题

答案 1 :(得分:1)

我认为需要一段时间才能解决问题。直到一些Windows用户实际调试python.el。

在那之前,为什么不试试Emacs IPython Notebook?它是Emacs更好的IPython绑定。您不需要使用笔记本电脑部件。您可以将其视为python.el中python shell的替代品。 (免责声明:我是作者)