_tkinter.TclError:沒有顯示名稱,也沒有$DISPLAY 環境變數
_tkinter.TclError:沒有顯示名稱,也沒有$DISPLAY 環境變數
問題
使用Matplotlib 的Python 腳本在伺服器上失敗,並出現錯誤「產生繪圖時沒有顯示名稱和$DISPLAY 環境變數」。出現此問題的原因是 Matplotlib 預設使用 Xwindows 後端,並且與缺少圖形使用者介面 (GUI) 的伺服器環境不相容。
解決方案
要解決此問題,請將 Matplotlib 設定為使用非互動式後端。有多種方法可以實現此目的: 將程式碼新增至腳本:
在腳本開頭,導入matplotlib.pyplot 之前,包含以下程式碼:
import matplotlib
matplotlib.use('Agg')
導入matplotlib
matplotlib.use('Agg') 修改Matplotlib 設定檔:
在檔案.config/matplotlib/matplotlibrc 中,新增行backend: Agg.這將指示Matplotlib 使用非互動式Agg 後端。
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc 使用X 轉送的SSH:
透過SSH 連線到伺服器時,使用-X 選項啟用Xwindows 轉送。這將允許伺服器上執行的 GUI 應用程式與客戶端的 GUI 環境進行互動。
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
ssh -X remoteMachine.com Export $DISPLAY Variable:
將$DISPLAY環境變數設定為適當的值,例如客戶端的IP地址和顯示號碼machine.
echo "backend: Agg" > ~/.config/matplotlib/matplotlibrc
export DISPLAY=mymachine.com:0.0
透過實施這些解決方案之一,您可以將Matplotlib 配置為在伺服器環境中運行,而無需依賴GUI。