MatplotlibDeprecationWarning 与 Pyinstaller .exe

bla*_*ird 11 matplotlib pyinstaller python-3.x

我遇到了一个警告,该警告仅在运行 pyinstaller 可执行文件时出现。

...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__)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这里的所有建议:Python/matplotlib:摆脱 matplotlib.mpl 警告

我也试过这个,最终结果没有任何变化: Pyinstaller exe hide warning messages

最终可执行文件中出现的 MatplotlibDeprecation 警告没有任何更改。在 Pycharm 等 IDE 中运行代码时,基线不存在警告。

使用:Python 3.7.2 Pyinstaller 3.5 Matplotlib 3.1.1

nor*_*ius 11

在此处找到(部分)解决此问题的 pyinstaller问题。

已为 matplotlib >=3.1 引入了弃用警告。因此,MATPLOTLIBDATA在未来的版本中,pandas 将不再使用环境变量。但是,由于我不太清楚的原因,PyInstaller 目前依赖于这个变量。

导致警告的代码段在pyi_rth_mpldata.py 中找到:

os.environ["MATPLOTLIBDATA"] = os.path.join(sys._MEIPASS, "mpl-data")
Run Code Online (Sandbox Code Playgroud)

不幸的是,简单地在本地取消注释该行 (site-packages/PyInstaller/loader/rthooks/rpyi_rth_mpldata.py) 不是一个选项,导致我的 PyInstaller 包崩溃。

我目前看到以下选项:

  1. 将 matplotlib 降级到 v3.0 ( pip install 'matplotlib==3.0.3')
  2. 本地禁用matplotlib ( matplotlib/__init__.py:625) 中的弃用警告
  3. 过滤警告(请参阅其他答案了解如何)
  4. 等到补丁可用,或者帮助 pyinstaller 工作人员找到一个......

选项 1. 为我工作,希望你也很幸运。选项 2. 和 3. 是最简单的,应该没有任何副作用。