使用Pyinstaller .exe进行MatplotlibDeprecationWarning

时间:2019-08-15 23:32:47

标签: python-3.x matplotlib pyinstaller

我遇到了仅在运行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__)

我在这里尝试了所有建议:Python/matplotlib : getting rid of matplotlib.mpl warning

我也尝试了此操作,但最终结果没有任何变化: Pyinstaller exe hide warning messages

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

使用: 的Python 3.7.2 Pyinstaller 3.5 Matplotlib 3.1.1

2 个答案:

答案 0 :(得分:3)

如果您只想使警告静音:来自UserWarning的{​​{1}}的弃用警告信息集,因此您可以使用内置警告包中的filter_warnings()对其进行过滤。为此,请在导入任何matplotlib之前转储以下行。

Warning

import warnings warnings.filterwarnings("ignore", "(?s).*MATPLOTLIBDATA.*", category=UserWarning) 是正则表达式标志DOTALL,它使(?s)与警告消息中包含的.*相匹配。

您可以通过在上面的代码之后运行以下代码来测试它是否在PyInstaller构建之外确实有效。

\n

答案 1 :(得分:2)

找到here the pyinstaller issue(部分解决)此问题。

已针对matplotlib> = 3.1引入了弃用警告。因此,在以后的版本中,熊猫将不再使用环境变量crypto。但是,PyInstaller当前依赖于此变量,原因我尚不完全清楚。

导致该警告的代码段位于pyi_rth_mpldata.py中:

MATPLOTLIBDATA

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

我目前看到以下选项:

  1. 将matplotlib 降级到v3.0(os.environ["MATPLOTLIBDATA"] = os.path.join(sys._MEIPASS, "mpl-data")
  2. 在matplotlib(matplotlib/__init__.py:625)中
  3. 在本地禁用弃用警告
  4. 等待补丁可用,或帮助pyinstaller人员找到一个...

选择1。(部分)为我工作,希望您也很幸运。选项2是最简单的,不应有任何副作用。