2014-11-07 25 views
5

Ho un server Ubuntu 14.04 senza testa che mi collego in remoto tramite SSH. Voglio usare matplotlib e far apparire i grafici sul client ssh. Ad esempio, vorrei connettersi utilizzando:Utilizzo di matplotlib su server Ubuntu 14.04 senza testa

ssh -X [email protected] 

E poi da una console Python, voglio questo per produrre una trama in una finestra:

import matplotlib.pyplot as plt 
plt.plot(range(10)) 
plt.show() 

Ho installato matplotlib nel mio virtualenv, e io correva sudo apt-get install python-gtk2, ma il grafico non appare ancora. Presumo che mi mancano molti pacchetti. Cos'è un insieme abbastanza minimale di pacchetti relativi a X che potrei installare per far funzionare questo? NON voglio installare ubuntu-desktop.

+0

anche https://stackoverflow.com/questions/2801882/generating-a-png-with-matplotlib-when-display-is-undefined – tacaswell

+0

Questa non è la stessa domanda. Desidero esplicitamente utilizzare un back-end X, mentre la risposta accettata sull'altra domanda funziona intorno a tale requisito. – 10flow

+1

Ci scusiamo per il fatto che l'altra domanda viene visualizzata così spesso che ho abbinato il pattern in modo troppo aggressivo. È possibile avviare altri programmi GUI e si dispone di un xserver in esecuzione sul computer remoto? – tacaswell

risposta

3

Ho funzionato su Ubuntu 14.04.1 Server, ma è stato doloroso! La parte difficile è sicuramente virtualenv. Finalmente ho avuto fortuna usando il backend Qt4, che sono stato in grado di installare solo tramite il pacchetto Ubuntu e quindi ho dovuto collegarlo simbolicamente al mio virtualenv. Quindi, ecco la procedura passo-passo ...

installare il pre-reqs e incidere PyQt4 nella vostra virtualenv:

$ sudo apt-get install xauth x11-apps python-qt4 
$ ln -s /usr/lib/python2.7/dist-packages/PyQt4 /path/to/myvenv/lib/python2.7/PyQt4 

Ora manualmente scaricare e installare SIP (http://www.riverbankcomputing.com/software/sip/intro) con il venv attivato, come segue:

$ tar xzf sip-4.16.4.tar.gz 
$ cd sip-4.16.4 
$ python configure.py 
$ make 
$ sudo make install 

Avanti, scaricare fonte matplotlib tarball e modificare la configurazione di installazione per forzarlo installare Qt4 backend:

$ tar xzf matplotlib-1.4.2.tar.gz 
$ cp matplotlib-1.4.2/setup.cfg.template matplotlib-1.4.2/setup.cfg 

Ora modificare setup.cfg vicino alla linea 68 per leggere:

qt4agg = True 

Matplotlib sarà ora correttamente installate nel vostro venv:

$ pip install -e matplotlib-1.4.2/ 

Ora è possibile connettersi via SSH utilizzando il flag -X e trame verrà caricato da remoto!

Problemi correlati