If you face _tkinter.TclError when you run your python application based on MatPlotLib on CentOS 7, it might be caused by MatPlotLib choose Xwindows backend by default.
The error message will be like below:
$ python matplot_test.py Traceback (most recent call last): File "matplot_test.py", line 3, in <module> plt.plot(["Seoul","Paris","Seattle"], [30,25,55]) File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 3352, in plot ax = gca() File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 969, in gca return gcf().gca(**kwargs) File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 586, in gcf return figure() File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 533, in figure **kwargs) File "/usr/lib64/python2.7/site-packages/matplotlib/backend_bases.py", line 161, in new_figure_manager return cls.new_figure_manager_given_figure(num, fig) File "/usr/lib64/python2.7/site-packages/matplotlib/backends/_backend_tk.py", line 1046, in new_figure_manager_given_figure window = Tk.Tk(className="matplotlib") File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1745, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable
In order to solve this problem, you need to set MatPlotLib by following codes on top of your codes.
import matplotlib matplotlib.use('Agg') ... <your original code>