使用Matplotlib绘图时如何抑制安全编码警告?
解决macOS下Matplotlib触发的Secure Coding警告问题
这个警告不是Python层面的警告,是macOS的Cocoa框架(AppKit)输出到标准错误流(stderr)的日志,所以Python自带的warnings模块根本管不到它,这就是你用warnings.filterwarnings("ignore")没用的原因。
下面是几种有效的抑制方法:
方法一:切换非交互式后端(仅保存图像时用)
如果不需要弹出图像窗口,只是生成并保存图片,可以用Agg后端,要在导入pyplot之前设置:import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt # 你的绘图代码示例 plt.plot([1, 2, 3]) plt.savefig('output.png')方法二:切换交互式后端(需要显示图像时用)
替换默认的MacOSX后端为TkAgg,同样要在导入pyplot前设置:import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt plt.plot([1, 2, 3]) plt.show()方法三:临时重定向标准错误流
把stderr临时导向空设备,捕获这个系统级日志,之后再恢复:import os import sys import matplotlib.pyplot as plt # 保存原始stderr original_stderr = sys.stderr # macOS/Linux用/dev/null,Windows用NUL sys.stderr = open(os.devnull, 'w') # 执行绘图和显示 plt.plot([1, 2, 3]) plt.show() # 恢复原始stderr sys.stderr = original_stderr方法四:永久修改Matplotlib配置
找到Matplotlib的配置文件matplotlibrc,可以通过以下代码找到配置目录:import matplotlib print(matplotlib.get_configdir())在配置文件里找到
backend一行,改成backend: TkAgg或者backend: Agg,保存后重启Python即可生效。
内容的提问来源于stack exchange,提问作者backtosq1
相关产品推荐
相关产品推荐

