Sin nombre de visualización y sin variable de entorno $ DISPLAY usando tkinter a través de ssh

Estoy intentando ejecutar un código muy simple que genera un archivo .png en un clúster. Aquí está el código:

import matplotlib.pyplot as plt import numpy as np x = np.random.randn(60) y = np.random.randn(60) plt.scatter(x, y, s=20) out_png = 'path/to/store/out_file.png' plt.savefig(out_png, dpi=150) 

Si ejecuto este código con el comando python simple_code.py en mi sistema que tiene matplotlib 1.2.1 instalado, recibo la advertencia:

 Unable to load library icui18n "Cannot load library icui18n: 

La imagen .png aún se produce, así que no tengo problemas aquí. Pero si uso el mismo comando y código en un clúster que tiene matplotlib 1.3.0 instalado, falla con el error:

 Traceback (most recent call last): File "simple_code.py", line 33, in  plt.scatter(x, y, s=20) File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3078, in scatter ax = gca() File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 803, in gca ax = gcf().gca(**kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 450, in gcf return figure() File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in figure **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager return new_figure_manager_given_figure(num, figure) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure window = Tk.Tk() File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1712, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable 

¿Que está sucediendo aquí?


Añade, este es el script que utilizo para iniciar sesión en el clúster:

 #!/usr/bin/expect set login "user" set addr "address1" set addr2 "address2" set pw "password" spawn ssh -X $login@$addr expect "$login@$addr\'s password:" send "$pw\r" expect "$login@host:" send "ssh -X $addr2\r" expect "$login@$addr\'s password:" send "$pw\r" interact 

Su problema está en el comando ssh. Lo que debes hacer es escribirlo de esta manera:

 ssh -X "your_login"