Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 403
jtobelem Avatar asked Oct 31 '21 12:10

jtobelem


People also ask

Why we use Matplot library in Python?

Matplotlib is a cross-platform, data visualization and graphical plotting library for Python and its numerical extension NumPy. As such, it offers a viable open source alternative to MATLAB. Developers can also use matplotlib's APIs (Application Programming Interfaces) to embed plots in GUI applications.

What does Matplotlib Pyplot library do?

Matplotlib is a python library used to create 2D graphs and plots by using python scripts. It has a module named pyplot which makes things easy for plotting by providing feature to control line styles, font properties, formatting axes etc.

Is PLT show necessary in Jupyter?

Plotting from an IPython shell Using plt. show() in Matplotlib mode is not required.


3 Answers

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
like image 76
Trenton McKinney Avatar answered Oct 18 '22 20:10

Trenton McKinney


I had the same issue and after a fair amount of investigation and troubleshooting, the fix was pretty straight forward:

conda update -c anaconda numpy

conda upgrade -c conda-forge matplotlib

After that it ran fine and my visuals plotted without issue.

like image 2
Mark Charipar Avatar answered Oct 18 '22 18:10

Mark Charipar


For anybody that downgrading to freetype=2.10.4 didn't work. In my case the issue happened after installing the new version of scikit-learn=1.11 from conda-forge channel. After trying out many options the following worked for me:

  • reinstall numpy from main/pkg to conda-forge channel
  • reinstall mkl package conda -c intel mkl
  • reinstall matplotlib=4.3 from conda-forge

It's quite a drastic measure, since you have to reinstall all dependecies that rely on NumPy (Pandas, TensorFlow etc.), but it was the only one that worked for me.

like image 2
xan Avatar answered Oct 18 '22 18:10

xan