web-dev-qa-db-fra.com

MatplotlibDeprecationWarning avec Pyinstaller .exe

J'ai rencontré un avertissement qui n'apparaît que lorsque l'exécutable pyinstaller est exécuté.

...appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py:627: MatplotlibDeprecationWarning:
The MATPLOTLIBDATA environment variable was deprecated in Matplotlib 3.1 and will be removed in 3.3.
  exec(bytecode, module.__dict__)

J'ai essayé toutes les suggestions ici: Python/matplotlib: se débarrasser de l'avertissement matplotlib.mpl

J'ai également essayé ceci sans aucun changement dans le résultat final: Pyinstaller exe hide messages d'avertissement

sans aucune modification des avertissements MatplotlibDeprecation apparaissant dans l'exécutable final. Les avertissements ne sont pas présents lors de l'exécution du code dans un IDE tel que Pycharm.

Utilisation de: Python 3.7.2 Pyinstaller 3.5 Matplotlib 3.1.1

6
blackbird

Si vous souhaitez simplement désactiver l'avertissement: l'avertissement de dépréciation hérite de UserWarning qui hérite de Warning afin que vous puissiez le filtrer à l'aide de filter_warnings() de le package d'avertissements intégré. Pour ce faire, videz les lignes suivantes avant toute importation de matplotlib.

import warnings
warnings.filterwarnings("ignore", "(?s).*MATPLOTLIBDATA.*", category=UserWarning)

Le (?s) est le drapeau regex DOTALL qui permet à .*s pour correspondre\ns contenus dans le message d'avertissement.

Vous pouvez tester s'il fonctionne réellement en dehors d'une génération PyInstaller en exécutant le code suivant après le code ci-dessus.

import os, sys
# Artificially add the MATPLOTLIBDATA environment variable. This is reset
# when you restart your python console.
os.environ["MATPLOTLIBDATA"] = os.path.join(os.path.split(sys.executable)[0], "Lib/site-packages/matplotlib/mpl-data")

# Then proceed to load matplotlib
import matplotlib
1
bwoo