【问题标题】:plt.show() hangs on OSX with Anaconda Pythonplt.show() 使用 Anaconda Python 在 OSX 上挂起
【发布时间】:2015-07-17 04:13:09
【问题描述】:
import matplotlib.pyplot as plt
plt.figure()
plt.show()

...蟋蟀。解释器挂了,我似乎无法打断它。

这适用于 OSX 上的 Python 2.7.9 和 Anaconda 2.2.0 (x86_64)。

这是否发生在其他人身上?我该如何解决这个问题?

【问题讨论】:

  • 你确定是 plt.show() 挂起而不是导入?因为 OS X 上的字体缓存存在问题,this question 的答案已解决。
  • 导入工作正常,据我所知,其他一切也是如此。挂起肯定发生在plt.show()
  • 对我来说运行良好,在弹出窗口之前花了几秒钟。您使用交互模式还是非交互模式?你的后端是什么?您是从命令行中的脚本运行这些行,还是在 python 解释器中键入它们?根据我使用 OS-X 的经验,从命令行创建的窗口通常不会出现在最前面。会不会是绘图窗口是在其他窗口后面创建的或者隐藏在一个角落里?
  • 不 - 任何地方都没有窗口。后端是“MacOSX”。肯定挂了。
  • 啊,@titusjan 提出了一个很好的观点。既然他提到了后端,我记得我曾经有一个类似的问题,一旦我在我的~/.matplotlib/matplotlibrc 中将后端更改为backend: TkAgg,这个问题就解决了。如果使用 pythonw 对您来说不太方便,您可能也想试一试。

标签: python matplotlib anaconda


【解决方案1】:

尝试使用pythonw 而不是python 启动Python。

【讨论】:

  • 我不知道为什么会这样,但确实如此。谢谢!
  • 在 OS X 上,每当您使用与 OS X 窗口系统挂钩的东西(例如 matplotlib)时,您都需要使用 pythonw,因为它需要“欺骗”OS X 使其认为它是一个框架(使用您可以在anaconda 目录中找到的python.app 包)。
  • 另一件应该起作用的事情是使用ipython,因为它会自动使用python.app。
  • 使用ipython 为我工作,谢谢@asmeurer。对于脚本,我将 hashbang 行更改为 #!/usr/bin/env ipython,它就像一个魅力。
【解决方案2】:

这很可能是您的后端设置存在问题。如果您希望您的绘图显示为内联(在您的笔记本内),请使用此添加的行导入:

import matplotlib.pyplot as plt
%matplotlib inline

要让您的绘图以交互方式内联(在您的笔记本中)显示,请改用此行导入:

import matplotlib.pyplot as plt
%matplotlib notebook

要让您的绘图显示在笔记本之外(在新窗口中),请改为使用以下行导入:

import matplotlib.pyplot as plt
%matplotlib qt

注意:您需要重新启动内核以在内联笔记本和外部 qt 之间切换以避免错误:警告:无法更改为不同的 GUI 工具包

最后,如果问题仍然存在,以下可能有助于发现发生了什么:

import matplotlib
matplotlib.get_backend()

如果使用上述任何选项,它应该输出以下之一:

  • 'module://ipykernel.pylab.backend_inline'
  • 'nbAgg'
  • 'Qt4Agg'

【讨论】:

    【解决方案3】:

    修改matplotlib.pyplot导入为:

    import matplotlib
    matplotlib.use('TkAgg') #----> Specify the backend
    import matplotlib.pyplot as plt
    

    【讨论】:

      【解决方案4】:

      在你的 iPython 开头添加这个:

      % pylab inline
      

      【讨论】:

        猜你喜欢
        • 2012-11-13
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        • 2011-09-15
        相关资源
        最近更新 更多