我遇到了仅在运行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
答案 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软件包崩溃。
我目前看到以下选项:
os.environ["MATPLOTLIBDATA"] = os.path.join(sys._MEIPASS, "mpl-data")
)matplotlib/__init__.py:625
)中选择1。(部分)为我工作,希望您也很幸运。选项2是最简单的,不应有任何副作用。