サーバー上で Matplotlib に関連する Python スクリプトを実行すると、エラー「_tkinter.TclError: 表示名も $DISPLAY 環境変数もありません。」このエラーは、Matplotlib がデフォルトで Xwindows バックエンドを使用するため、グラフィカル表示環境が必要となるために発生します。ただし、サーバー環境にはこの機能が欠けていることがよくあります。
この問題に対処するには、代わりに非対話型バックエンドを使用するように Matplotlib に指示できます。 pyplot をインポートする前に、スクリプトの先頭に次のコードを挿入します:
<code class="python">import matplotlib matplotlib.use('Agg')</code>
または、次の行を .config/matplotlib/matplotlibrc ファイルに追加できます:
backend: Agg
これにより、グラフィカル表示を必要としない Agg バックエンドを使用するように Matplotlib が設定されます。
別のオプションは、X11 転送で ssh を使用することです:
ssh -X remoteMachine
このコマンドにより、次のアクセスが可能になります。 Xwindows アプリケーションをリモートで実行します。
最後に、DISPLAY 環境変数を設定できます。
<code class="bash">export DISPLAY=mymachine.com:0.0</code>
有効な表示名を指定すると、Matplotlib は別のマシン上のグラフィカル ディスプレイに接続できるようになります。
詳細については、Matplotlib FAQ を参照してください: https://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server
以上がサーバー上で Matplotlib を使用する際の「_tkinter.TclError: no display name and no $DISPLAY Environmental variable」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。