Search code examples
pythonwindowsmatplotlibcondafreetype

After conda update, python kernel crashes when matplotlib is used


I have create this simple env with conda:

conda create -n test python=3.8.5 pandas scipy numpy matplotlib seaborn jupyterlab

The following code in jupyter lab crashes the kernel :

import matplotlib.pyplot as plt

plt.subplot()

I don't face the problem on Linux. The problem is when I try on Windows 10.

There are no errors on the jupyter lab console (where I started the server), and I have no idea where to investigate.


Solution

  • Update 2021-11-06

    • The default pkgs/main channel for conda has reverted to using freetype 2.10.4 for Windows, per main / packages / freetype.
    • If you are still experiencing the issue, use conda list freetype to check the version: freetype != 2.11.0
      • If it is 2.11.0, then change the version, per the solution, or conda update --all (providing your default channel isn't changed in the .condarc config file).

    Solution

    • If this is occurring after installing Anaconda, updating conda or freetype since Oct 27, 2021.
    • Go to the Anaconda prompt and downgrade freetype 2.11.0 in any affected environment.
      • conda install freetype=2.10.4
    • Relevant to any package using matplotlib and any IDE
      • For example, pandas.DataFrame.plot and seaborn
      • Jupyter, Spyder, VSCode, PyCharm, command line.

    Discovery

    • An issue occurs after updating with the most current updates from conda, released Friday, Oct 29.
    • After updating with conda update --all, there's an issue with anything related to matplotlib in any IDE (not just Jupyter).
      • I tested this in JupyterLab, PyCharm, and python from the command prompt.
      • PyCharm: Process finished with exit code -1073741819
      • JupyterLab: kernel just restarts and there are no associated errors or Traceback
      • command prompt: a blank interactive matplotlib window will appear briefly, and then a new command line appears.
    • The issue seems to be with conda update --all in (base), then any plot API that uses matplotlib (e.g. seaborn and pandas.DataFrame.plot) kills the kernel in any environment.
    • I had to reinstall Anaconda, but do not do an update of (base), then my other environments worked.
    • I have not figured out what specifically is causing the issue.
    • I tested the issue with python 3.8.12 and python 3.9.7
    • Current Testing:
      • Following is the conda revision log.
      • Prior to conda update --all this environment was working, but after the updates, plotting with matplotlib crashes the python kernel
      2021-10-31 10:47:22  (rev 3)
         bokeh  {2.3.3 (defaults/win-64) -> 2.4.1 (defaults/win-64)}
         click  {8.0.1 (defaults/noarch) -> 8.0.3 (defaults/noarch)}
         filelock  {3.0.12 (defaults/noarch) -> 3.3.1 (defaults/noarch)}
         freetype  {2.10.4 (defaults/win-64) -> 2.11.0 (defaults/win-64)}
         imagecodecs  {2021.6.8 (defaults/win-64) -> 2021.8.26 (defaults/win-64)}
         joblib  {1.0.1 (defaults/noarch) -> 1.1.0 (defaults/noarch)}
         lerc  {2.2.1 (defaults/win-64) -> 3.0 (defaults/win-64)}
         more-itertools  {8.8.0 (defaults/noarch) -> 8.10.0 (defaults/noarch)}
         pyopenssl  {20.0.1 (defaults/noarch) -> 21.0.0 (defaults/noarch)}
         scikit-learn  {0.24.2 (defaults/win-64) -> 1.0.1 (defaults/win-64)}
         statsmodels  {0.12.2 (defaults/win-64) -> 0.13.0 (defaults/win-64)}
         sympy  {1.8 (defaults/win-64) -> 1.9 (defaults/win-64)}
         tqdm  {4.62.2 (defaults/noarch) -> 4.62.3 (defaults/noarch)}
         xlwings  {0.24.7 (defaults/win-64) -> 0.24.9 (defaults/win-64)}
    
    • The issue seems to be freetype
      • Downgrading from 2.11.0 to 2.10.4 resolved the issue and made the environment work with matplotlib
    • Went to post a bug report and discovered there is [Bug]: Matplotlib crashes Python #21511