matplotlib 在带有 TkAgg 后端的 macOS 上的 plt.show() 中崩溃

Ser*_*ity 4 python macos matplotlib anaconda

该脚本在 for 循环中运行,每次迭代调用plt.plot()和循环调用之后plt.show()- 并崩溃(屏幕冻结并需要强制重启)。在崩溃之前或之后没有显示错误消息。IMO,这不是内存问题。

如果我从 shell / PyCharm IDE 运行脚本也是如此。

有趣的点

  1. 我过去曾在同一台 Mac 和相同配置上多次运行此脚本。唯一可能相关的是我几天前更新了我的操作系统。
  2. 当我在调试模式下运行脚本时,停止点位于“plt.show()”中 - 并且没有崩溃并且脚本结束而不显示情节。
  3. 运行脚本时,会打开一个带有“python”-ish 图标的小窗口。当我按下它时什么也没有发生。

我已经尝试在此处此处此处跟踪许多其他报告的问题,但均未成功。

MacOS 版本:Mojave 10.14.6

我无法共享代码和数据,但为了轻松重现问题 - 尝试运行以下简单代码:

>>> import matplotlib
>>> matplotlib.use("TkAgg")
>>> from matplotlib import pyplot as plt
>>> plt.plot(range(10))
[<matplotlib.lines.Line2D object at 0x1141069e8>]
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

Mac 崩溃(冻结并需要重新启动)。

套餐:

matplotlib 3.0.3 py37h54f8f79_0
numpy的1.16.2 py37hacdab7b_0
numpy的基1.16.2 py37h6575580_0
的PyQt 5.9.2 py37h655552a_2
pyqt5 5.13.0 pypi_0的PyPI scikit学习0.20.3 py37h27c97d8_0
SciPy的1.2.1 py37h1410ff5_0

*conda info*

     active environment : base
    active env location : /Users/nancy/anaconda3
            shell level : 1
       user config file : /Users/nancy/.condarc
 populated config files : /Users/nancy/.condarc
          **conda version : 4.7.11**
    conda-build version : 3.17.8
         **python version : 3.7.3.final.0**
       virtual packages : 
       base environment : /Users/nancy/anaconda3  (writable)
           channel URLs : http://statgen.org/wp-content/uploads/Softwares/pyplink/osx-64
                          http://statgen.org/wp-content/uploads/Softwares/pyplink/noarch
                          https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/nancy/anaconda3/pkgs
                          /Users/nancy/.conda/pkgs
       envs directories : /Users/nancy/anaconda3/envs
                          /Users/nancy/.conda/envs
               **platform : osx-64**
             **user-agent : conda/4.7.11 requests/2.21.0 CPython/3.7.3 Darwin/18.7.0 OSX/10.14.6**
                UID:GID : 501:20
             netrc file : None
           offline mode : False
Run Code Online (Sandbox Code Playgroud)

Ser*_*ity 11

根据ImportanceOfBeingErnest 的评论,Apple 不喜欢Tkinter(TkAgg 后端),所以我需要将后端更改为“Qt5Agg”

import matplotlib  
matplotlib.use('Qt5Agg')
from matplotlib import pyplot as plt
Run Code Online (Sandbox Code Playgroud)

  • 更新到 Mojave 10.14.6 后我遇到了完全相同的问题,这解决了它,非常感谢! (2认同)