Issue with tkinter, python and seaborn: _tkinter.TclError: no display name and no $DISPLAY environment variable
故事
pandas,numpy,seaborn,matplotlib安装在系统上没有错误。 我从http://seaborn.pydata.org/examples/many_pairwise_correlations.html获取此代码示例
片段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | from string import letters import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt sns.set(style="white") # Generate a large random dataset rs = np.random.RandomState(33) d = pd.DataFrame(data=rs.normal(size=(100, 26)), columns=list(letters[:26])) # Compute the correlation matrix corr = d.corr() # Generate a mask for the upper triangle mask = np.zeros_like(corr, dtype=np.bool) mask[np.triu_indices_from(mask)] = True # Set up the matplotlib figure f, ax = plt.subplots(figsize=(11, 9)) # Generate a custom diverging colormap cmap = sns.diverging_palette(220, 10, as_cmap=True) # Draw the heatmap with the mask and correct aspect ratio sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, square=True, xticklabels=5, yticklabels=5, linewidths=.5, cbar_kws={"shrink": .5}, ax=ax) |
它会导致以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Traceback (most recent call last): File"seaborn-example.py", line 4, in <module> import seaborn as sns File"/usr/local/lib/python2.7/site-packages/seaborn/__init__.py", line 6, in <module> from .rcmod import * File"/usr/local/lib/python2.7/site-packages/seaborn/rcmod.py", line 8, in <module> from . import palettes, _orig_rc_params File"/usr/local/lib/python2.7/site-packages/seaborn/palettes.py", line 12, in <module> from .utils import desaturate, set_hls_values, get_color_cycle File"/usr/local/lib/python2.7/site-packages/seaborn/utils.py", line 12, in <module> import matplotlib.pyplot as plt File"/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module> _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() File"/usr/local/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup globals(),locals(),[backend_name],0) File"/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module> from six.moves import tkinter as Tk File"/usr/local/lib/python2.7/site-packages/six.py", line 203, in load_module mod = mod._resolve() File"/usr/local/lib/python2.7/site-packages/six.py", line 115, in _resolve return _import_module(self.mod) File"/usr/local/lib/python2.7/site-packages/six.py", line 82, in _import_module __import__(name) File"/usr/local/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module> import _tkinter # If this fails your Python may not be configured for Tk ImportError: No module named _tkinter |
引用安装tkinter for Python以安装tkinter
1 | yum install -y tkinter tk-devel |
然后我按照这个来重建Python
1 | https://github.com/h2oai/h2o-2/wiki/installing-python-2.7-on-centos-6.3.-follow-this-sequence-exactly-for-centos-machine-only |
当我尝试重建时得到了这个 - 仍然是tkinter的一些问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Traceback (most recent call last): File"seaborn-example.py", line 22, in <module> f, ax = plt.subplots(figsize=(11, 9)) File"/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 1203, in subplots fig = figure(**fig_kw) File"/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 535, in figure **kwargs) File"/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager return new_figure_manager_given_figure(num, figure) File"/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure window = Tk.Tk() File"/usr/local/lib/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 |
这有什么不对?
在文件的开头
1 2 | import matplotlib matplotlib.use('Agg') |