2016-03-02 14 views
17

Używam skryptu Pythona na innym komputerze za pomocą polecenia ssh w linux. Uruchomiłem również to polecenie:RuntimeError: Niepoprawna zmienna DISPLAY

source ~/.bashrc 

po zalogowaniu się do drugiego komputera, w celu zdefiniowania właściwych ścieżek w nowej maszynie. Otrzymałem komunikat o błędzie, aby uruchomić następujące wiersze kodu Pythona, nawet próbowałem postępować zgodnie z instrukcjami w this question, definiując backend.

>>> 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.')  

Komunikat o błędzie

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 

wszelkie sugestie, jak rozwiązać ten problem

+1

Czy 'echo $ DISPLAY' na komputerze. Jaki jest twój system operacyjny, czy korzystasz z ssh? – 9000

+0

Jeśli musisz użyć wyświetlacza na zdalnym komputerze, musisz użyć ssh z argumentem '-X'. –

+1

@KlausD. Użyłem polecenia 'ssh -X username @ host' do zalogowania. – Dalek

Odpowiedz

28

trzeba zadeklarować matplotlib.use('agg') przed import pylab as plt.

Reference

+0

nadal mam błąd runtime :( Plik "/home/user/anaconda2/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", wiersz 138, w _create_qApp podbicie RuntimeError ('Nieprawidłowy DISPLAY zmiennej') RuntimeError: Nieprawidłowy zmiennej DISPLAY – Hana90

+1

Spójrz na to [komentarz] (https://github.com/matplotlib/matplotlib/issues/3466/#issuecomment-195899517) –

+1

wydaje się, że powinieneś użyć małej litery "a", tak samo jak matplotlib.use ("agg") przed importem pylab jako PLT. –

6

Dodaj

plt.switch_backend('agg') 

po

import matplotlib.pyplot as plt