Python绘图图像保存错误

时间:2018-06-14 00:42:49

标签: python python-3.x matplotlib django-rest-framework

我是Python新手。我使用Django编写Web服务来保存服务器中的图像。我试图使用下面的代码将绘图保存为图像,并且在Python抛出错误之后它可以正常工作3次。如何解决这个问题?

Exception ignored in: <bound method Image.__del__ of <tkinter.PhotoImage object at 0x000000000FE40048>>
Traceback (most recent call last):
  File "c:\dev\lib\tkinter\__init__.py", line 3504, in __del__
    self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Exception ignored in: <bound method Image.__del__ of <tkinter.PhotoImage object at 0x0000000010996438>>
Traceback (most recent call last):
  File "c:\dev\lib\tkinter\__init__.py", line 3504, in __del__
    self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Exception ignored in: <bound method Image.__del__ of <tkinter.PhotoImage object at 0x0000000010B8BF98>>
Traceback (most recent call last):
  File "c:\dev\lib\tkinter\__init__.py", line 3504, in __del__
    self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Tcl_AsyncDelete: async handler deleted by the wrong thread


**PYTHON CODE**  
fileName = id_generator()+".png"
filePath = settings.MEDIA_ROOT+"/"+fileName
fig.savefig(filePath, dpi=fig.dpi)
plt.close(fig) 
Response(fileName, status=status.HTTP_201_CREATED)

Package             Version
------------------- ---------
cassandra-driver    3.14.0
certifi             2018.4.16
cycler              0.10.0
Django              2.0.5
djangorestframework 3.8.2
kiwisolver          1.0.1
matplotlib          2.2.2
numpy               1.14.4
pandas              0.23.0
pip                 10.0.1
pyparsing           2.2.0
python-dateutil     2.7.3
pytz                2018.4
scikit-learn        0.19.1
scipy               1.1.0
setuptools          39.2.0
six                 1.11.0
wheel               0.31.1
wincertstore        0.2

1 个答案:

答案 0 :(得分:2)

在不同情况下,我遇到了同样的问题。如answer中所述,应添加matplotlib.use('Agg')。这应该可以解决您的问题。