记录Python使用flask框架,报错(主线程不在主循环之内)
方法1
注释掉plot.show()
方法2
原代码:
import matplotlib.pyplot as plt
改为:
import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot as plt
"""
use ( 'Agg ')这里是因为matplotlib的默认backend是TkAgg
而FltkAgg,GTK,GTKAgg,GTKCairo,TkAgg , wx or wxAgg这几个backend都要求有GUI图形界面。但是linux环境是没有图形界面的
所以需要手动指定为不需要GUI的backend--------Agg,Cairo,PS,PDF or svG
"""
问题表象
flask框架在cmd命令中运行时,后台代码执行plt.show(),图形框强行启动
实质
参考博主1的帖子
- matplotlib.pyplot造成的问题。
- matplotlib.pyplot在运行的时候,是需要在主线程(Main Thread)上运行的。
报错原因可能是在使用多线程的时候,将使用matplotlib.pyplot的函数用在了子线程里面。
文章介绍了在使用Python的Flask框架时遇到的关于matplotlib.pyplot的报错问题。问题出现在尝试在非主线程中使用`plt.show()`或未正确设置matplotlib的后端。解决方案包括注释掉`plot.show()`或者切换到不需要GUI的Agg后端。此问题通常在无GUI环境或者多线程中出现。
489

被折叠的 条评论
为什么被折叠?



