2012-07-13 30 views
5

Mi piacerebbe connettermi a un notebook IPython su un computer remoto (tramite un tunnel ssh o tramite https) e fare in modo che il notebook ipython apra un grafico matplotlib in una nuova finestra (rispetto a 'inline').È possibile accedere da remoto a un notebook IPython senza utilizzare il plotting in linea?

È possibile?

Quando tento di stampare senza il backend "in linea", i rapporti del kernel del notebook "non possono connettersi al server X" e si bloccano.

Il server X11 è in esecuzione sul computer client e ho abilitato l'inoltro X11 utilizzando l'opzione -Y durante la creazione di ssh-tunnel.

Grazie per qualsiasi consiglio.

+1

È necessario abilitare l'inoltro X11 anche sul computer remoto (con le opzioni sshd). –

+0

Grazie, ma credo che questa opzione sia abilitata, cioè posso usare X11 per aprire windows per emacs, gimp, ecc ... ma in qualche modo il kernel ipython su cui è in esecuzione il notebook non è in grado di farlo. – user1522298

+0

In primo luogo, hai detto "usando l'opzione -Y": dovrebbe essere '-X'. Ora, sono stato in grado di farlo da uno dei miei computer Ubuntu (anche se era un po 'instabile .. tendeva a far scattare la mia connessione adsl). Dalla mia altra casella (con internet diretta), i kernel ipython si bloccano con "non può connettersi a X server" se provo a 'show()' una trama. Per il momento, non ho ancora capito perché ... – drevicko

risposta

4

Sì, lo è, almeno tramite tunneling porta ssh.

(NOTA: gli esempi sono stati fatti soffiano su Ubuntu 12.04, ma lo stesso principio dovrebbe funzionare per altre piattaforme)

ho avuto problemi simili e ha scoperto che se corro il notebook IPython dall'interno del porto-e Sessione X-forwarding sessione (es .: quella che imposta la porta e l'inoltro X), funziona. Clunky e fastidioso, ma funziona. Per esempio:

at-home:~$ ssh -X -L 8889:localhost:8888 my.server 
... login message from my.server 
my.server:$ cd /folder/containing/my/notebooks 
my.server:$ ipython notebook 
[NotebookApp] .... lots of info about the IPython notebook server including 
[NotebookApp] The IPython notebook is running at 'http://127.0.0.1:8888/' 

Nota che ho inoltrato porta 8889 - questo significa che uso http://localhost:8889/ in un browser sul mio at-home macchina. Per me, questo funziona bene con il backend Qt4Agg.

Ho il sospetto che funzionerà anche per l'accesso ai notebook tramite https se si esegue il server notebook IPython in questo modo (ad esempio: da una sessione ssh -X). Si noti che i grafici appariranno sulla macchina da cui è stata inoltrata la sessione X. Se qualcuno esegue un notebook in un browser su un'altra macchina, potrebbe essere un po 'strano!

Potrebbe essere possibile dire a un server notebook IPython in esecuzione come trovare il server X inoltrato da qualche nuova sessione ssh, ma non sono sicuro di come (ben informate le modifiche siano benvenute!).

+0

+1! grazie, questo ha risolto subito il mio problema di "port forwarding" di un notebook ipython remoto – Acorbe

Problemi correlati