1. ホーム
  2. パイソン

TclError: 表示名がない、$DISPLAY環境変数がない問題を解決しました。

2022-01-23 02:18:04
<パス

この記事は、私の個人的なブログで最初に公開されたものです。 TclError 表示名がない、$DISPLAY環境変数がない問題 - zhang0peterの個人ブログ


質問

PythonのmatplotlibをLinuxのコマンドラインから使っているのですが、エラーが表示されます。

 File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 1466, in title
    return gca().set_title(s, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 950, in gca
    return gcf().gca(**kwargs)
  File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 586, in gcf
    return figure()
  File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 535, in figure
    **kwargs)
  File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 81, in new_figure_manager
    return new_figure_manager_given_figure(num, figure)
  File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 89, in new_figure_manager_given_figure
    window = Tk.
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1880, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable



解決方法

コマンドラインで描画できないのが原因で、matplotlibのバックエンドはデフォルトでXwindowsになっているので、それを pyplotをインポートする前に設定するように注意してください。
設定が間違っている :

import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg')


正しい設定 :

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt