You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10 Anaconda3环境下matplotlib.pyplot.savefig段错误问题求助

故障现象

我在Windows 10系统的Visual Studio Code中运行Python脚本时,发现Anaconda3内置的matplotlib包存在异常:调用matplotlib.pyplot.savefig函数将图表保存为.png格式时会触发segmentation fault(段错误),多日搜索资料未定位问题根源,相关公开issue仅明确了问题成因但没有可行解法,特此求助。

补充:Plotter模块代码

import faulthandler
faulthandler.enable()
from Utilities import *

class Plotter:
    def __init__(self, lst1: list, lst2: list, lst3: list):
        self.lst1 = lst1
        self.lst2 = lst2
        self.lst3 = lst3

    def plotterFunc(self) -> mpl.pyplot.axes:
        fig, ax = mpl.pyplot.subplots(figsize=(12, 12))
        setScaleLabelTickLimit(ax, t3)
        ax.set_ylabel('Intensity [$\frac{{W}}{{cm^{{2}}}}$]')
        plotter2(ax, x3, self.lst3)
        mpl.pyplot.savefig(PLOT_DIR/'Intensity/Intensity.png', 
                    orientation='landscape', bbox_inches='tight')
        mpl.pyplot.clf()
        
    def plotterFunc2():
        pass
    
    def plotterFunc3():
        pass

完整报错信息

Windows fatal exception: access violation

Current thread 0x0001fb6c (most recent call first):
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 240 in get_text_width_height_descent
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\text.py", line 306 in _get_layout
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\text.py", line 903 in get_window_extent
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axis.py", line 1068 in
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axis.py", line 1068 in _get_tick_bboxes
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axis.py", line 1142 in draw
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py", line 51 in draw_wrapper
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\image.py", line 132 in _draw_list_compositing_images
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes_base.py", line 2921 in draw
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib_api\deprecation.py", line 431 in wrapper
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py", line 51 in draw_wrapper File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\image.py", line 132 in _draw_list_compositing_images
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\figure.py", line 2790 in draw
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py", line 51 in draw_wrapper
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\artist.py", line 74 in draw_wrapper
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 2230 in print_figure
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 78 in print_figure
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\figure.py", line 3015 in savefig
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 966 in savefig
File "c:\Users\username...\Plotter.py", line 41 in plotterFunc

File "c:/Users/username/.../my_script.py", line 199 in main
File "c:/Users/username/.../my_script.py", line 211 in

Segmentation fault

解决方案
  • 优先尝试更换matplotlib后端:报错显示当前使用Qt5Agg后端,该GUI后端在无界面环境下保存图片时经常触发段错误,在导入matplotlib.pyplot之前指定无GUI的Agg后端即可:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
  • 修复LaTeX文本渲染冲突:故障发生在文本宽度计算环节,和ylabel中使用的LaTeX公式渲染直接相关,可先关闭LaTeX渲染测试:
mpl.rcParams['text.usetex'] = False

如果需要保留LaTeX渲染,手动指定系统已安装的兼容字体即可,比如:

# 指定宋体
mpl.rcParams['font.family'] = 'SimSun'
# 或者指定Arial
mpl.rcParams['font.family'] = 'Arial'
  • 调整savefig参数:先去掉savefig的orientation、bbox_inches参数测试能否正常保存,确认问题触发点后再调整对应配置。
  • 替换绘图上下文清理逻辑:将原有mpl.pyplot.clf()替换为mpl.pyplot.close(fig),彻底清理绘图对象避免内存残留导致的异常。
  • 重装matplotlib包:Anaconda内置的matplotlib版本可能存在依赖冲突,先卸载原有包再重新安装:
# 卸载原有包
conda uninstall matplotlib
# 用conda重装稳定版
conda install matplotlib
# 若conda版本仍有问题,用pip安装最新版
pip install matplotlib -U

内容的提问来源于stack exchange,提问作者Ash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:02