Skip to main content
 首页 » 编程设计

python之tkinter、python 和 seaborn 问题 : _tkinter. TclError:没有显示名称,也没有 $DISPLAY 环境变量

2025年05月04日26kevingrace

故事

pandas, numpy, seaborn, matplotlib 在系统上安装无误。我从 http://seaborn.pydata.org/examples/many_pairwise_correlations.html 中获取了这个代码示例

片段

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) 

它会导致以下错误:

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 

引用Install tkinter for Python用于安装 tkinter

yum install -y tkinter tk-devel 

然后我按照这个来重建 Python

https://github.com/h2oai/h2o-2/wiki/installing-python-2.7-on-centos-6.3.-follow-this-sequence-exactly-for-centos-machine-only 

当我尝试重建时得到了这个 - tkinter 仍然存在一些问题:

  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 

这里有什么问题?

请您参考如下方法:

文件开头

import matplotlib 
matplotlib.use('Agg')