TclError: 表示名がなく、$DISPLAY環境変数もない。
リアルタイムでデータ前処理+モデル計算を行うサービスは、最近コンテナで展開し、物理マシンのGUIでは問題なく動作していましたが、それに伴う matplotlib 純粋なコマンドラインコンテナに入れたpyplotが(タイトル通り)エラーを報告し、ネットで調べると、原因はpython3-tkやtk-devがインストールされていないからではなく、matplotlibのバックエンドが正しく設定されていないためとのことです。
1. バックエンド
matplotlibは様々な使用例や出力形式を対象としています。matplotlib を python のコマンドラインから対話的に使用し、コマンドを入力するとプロットウィンドウがポップアップするものもあります。matplotlib を wxpython や pygtk などのグラフィカルユーザークロスに埋め込んで、リッチなアプリケーションを構築することもできます。数値シミュレーションからポストスクリプトイメージを生成するバッチスクリプトや、画像を動的に生成するウェブアプリケーションサービスでの matplotlib の利用もあります。
これらのユースケースをすべてサポートするために、matplotlib は、それぞれバックエンドと呼ばれる異なる出力を指向することができます。バックエンドは、グラフィックスを生成するために舞台裏ですべての作業を行います。バックエンドには、インタラクティブとノンインタラクティブの2種類があります。インタラクティブは、pygtk、wxpython、tkinter、qt4、macosxで使用され、ユーザーインターフェースバックエンドとしても知られています。Non-interactiveはPNG, SVG, PDF, PSなどで使われ、ハードコピーバックエンドとしても知られています。
2. バックエンドの4つの設定方法。
(1) matplotlibrcファイルで直接バックエンドを設定し、そのファイルを
場所は変わるかもしれませんので、ご自身で探してみてください 元々tkAggだったのを下のように変更します。
(2) 特定のスクリプトに対して、use()関数を使用することができる。
import matplotlib
matplotlib.use('Agg')
- 1
- 2
matplotlib.pyplotをインポートする前にuse()関数を使用しなければならないことに注意してください。
(3) パラメータを指定してスクリプトを実行する。
python3 test.py -dbackend Agg
- 1
d引数と他の解析用コマンドライン引数の競合に注意してください。
(4) 現在のシェルまたはスクリプトにMPLBACKEND環境変数を設定します。
export MPLBACKEND=Agg
MPLBACKEND=Agg python test.py
- 1
- 2
上記の方法は用途に応じて選べますが、コンテナ内で使用する場合は、きっぱりと最初の方法を選ぶべきでしょう
参考
1.
_tkinter.TclError: 表示名がない、$DISPLAY環境変数の解決策もない
2.
TclError: 表示名がない、$DISPLAY環境変数がない問題が解決されました。
関連
-
deepinシステムからログアウトする方法は?deepinシステムからログアウトし、ユーザーを切り替える方法
-
Manjaro linuxでマウスの速度を設定する方法は?Manjaroのマウスのカーソル速度を設定する方法に関するヒント
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
deepin linuxからmacosx仮想マシンに直接ファイルをドラッグ&ドロップする方法は?
-
deepin20の不正確な時刻表示を調整する方法は?Deepinの時刻補正方法
-
deepin20のソフトをアンインストールする方法を教えてください。deepinのアプリケーションをアンインストールする2つの方法
-
deepin20を使って、ドローイングボードで画像を開くには?deepinのお絵かき掲示板で画像を開く2つの方法
-
Deepin20システムのフォントを設定するには?Deepin端末のフォントサイズを設定する方法
-
Apache の一般的な設定エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
LinuxでPingを無効にする、または許可する設定方法
-
Linuxでファイルパーミッションを与えるには?Linuxでファイルに実行可能なパーミッションを追加するためのヒント
-
deepinシステムのバージョン番号を見るには?deepinシステムのバージョン情報を見るコツ
-
deepinv20 linux ファイルのサフィックスを変更する方法は?Linuxでファイルの拡張子を変更する方法
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
deepin linuxでroot権限に切り替えるには?Deepinでrootに切り替えるためのヒント
-
Kali Linuxのデフォルトのひげメニューアイコンを変更する方法は?
-
ディープインシステムの画面解像度を設定する方法は?ディープインシステムの解像度を設定する方法
-
ubuntu 12.04 eclipse でプログラム g++ がパスに見つからなかったと報告される。
-
sudo が sudo として表示される: setuid root である必要がある