2016-03-02 35 views
17

我在linux中使用ssh命令在另一臺機器上運行我的python腳本。我也運行這個命令:RuntimeError:無效的顯示變量

source ~/.bashrc 

登錄到另一臺機器後,爲了在新機器上定義正確的路徑。即使我試圖按照this question中的說明定義後端,我仍然收到運行以下python代碼行的錯誤消息。

>>> import matplotlib 
>>> import pylab as plt 
>>> matplotlib.use('Agg') 
>>> import numpy as np 
>>> x=np.arange(0,2,0.001) 
>>> y=np.sin(x)**2+4*np.cos(x) 
>>> fig = plt.figure() 
>>> plt.plot(x,y,'r.')  

錯誤消息

This probably means that Tcl wasn't installed properly. 
Traceback (most recent call last): 
    File "Systematic_Optimised.py", line 513, in <module> 
    fig = plt.figure() 
    File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", line 435, in figure 
    **kwargs) 
    File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 47, in new_figure_manager 
    return new_figure_manager_given_figure(num, thisFig) 
    File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 54, in new_figure_manager_given_figure 
    canvas = FigureCanvasQTAgg(figure) 
    File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 72, in __init__ 
    FigureCanvasQT.__init__(self, figure) 
    File "/vol/aibn84/data2/zahra/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", line 68, in __init__ 
    _create_qApp() 
    File "/vol/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 138, in _create_qApp 
    raise RuntimeError('Invalid DISPLAY variable') 
RuntimeError: Invalid DISPLAY variable 

任何建議如何解決這個問題

+1

做'回聲$ DISPLAY'你的機器上。你的操作系統是什麼,你是通過ssh運行的嗎? – 9000

+0

如果您必須使用遠程計算機上的顯示器,則需要使用帶'-X'參數的ssh。 –

+1

@KlausD。我用'ssh -X username @ host'命令登錄。 – Dalek

回答

28

import pylab as plt之前,您必須聲明matplotlib.use('agg')

Reference

+0

仍然我有運行時錯誤:( 文件「/home/user/anaconda2/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py」,第138行, in _create_qApp raise RuntimeError('無效的DISPLAY變量') RuntimeError:無效的DISPLAY變量 – Hana90

+1

看看這個[評論](https://github.com/matplotlib/matplotlib/issues/3466/#issuecomment-195899517) –

+1

似乎你應該使用小寫'a',所以做matplotlib.use('agg')之前導入pylab作爲plt。 –

6

添加

plt.switch_backend('agg') 

import matplotlib.pyplot as plt