2012-09-25 18 views
41

È possibile collegare un notebook IPython a un altro con un collegamento ipertestuale in una cella Markdown? Se provoCollegamenti tra notebook IPython

Link to [Notebook 2](files/notebook2.ipynb) 

o

Link to <a href="files/notebook2.ipynb">Notebook 2</a> 

una nuova scheda viene aperto con contenuti formattati prime del file ipynb. C'è un modo per far sì che IPython apra un altro notebook da usare in una nuova scheda tramite un collegamento ipertestuale?

risposta

60

Dal IPython 2 è possibile utilizzare esattamente la sintassi per la prima volta provato:

Link to [Notebook 2](notebook2.ipynb) 
+2

fantastico. Quella risposta dovrebbe essere in cima alla lista piuttosto che in quella precedente. – thias

0

Sfortunatamente, questo non è praticamente possibile. Il collegamento dovrebbe essere all'ID del notebook (ad esempio /a1e2a88f-3b91-4a4e-8ca1-d4fd7240f750 per quello a cui sto lavorando proprio adesso). Questo è un UUID creato all'avvio dal server IPython. Quindi è possibile copiare il collegamento da IPython Dashboard, ma sarà valido solo fino al riavvio.

+1

voglio aggiungere che non è praticamente possibile con l'attuazione * * corrente. Questo non significa che non sarà mai possibile.Segui [numero 3056] (https://github.com/ipython/ipython/issues/3056) –

+3

Come ha detto Paul un anno fa, ora è possibile grazie a un gestore di reindirizzamento, e nella prossima versione l'url dovrebbe contenere il nome file ciò renderà il processo trasparente per l'utente finale. – Matt

3

Da http://python.6.n6.nabble.com/where-is-the-code-to-generate-IPython-Notebook-URL-for-a-new-ipynb-file-td4996991.html:

È possibile accedere a una versione JSON di tutti i notebook da url: $ host/notebook

Ecco un frammento che ha funzionato per me:

import urllib2 
    import json 
    data = urllib2.urlopen("http://127.0.0.1:8888/notebooks") 
    json_data=data.read() 
    list_o_dicts=json.loads(json_data) 
    for d in list_o_dicts: 
     if d['name'] == 'test': 
      print d['notebook_id'] 

modificare questo in base alle tue necessità.

** su ulteriori letture, ho appena realizzato che OP stava anche cercando una nuova creazione di notebook, mantenendo comunque la mia risposta come modo per lavorare con il collegamento di notebook esistenti.

Un modo per provare l'obiettivo di OP è eseguire uno script che creerà un nuovo file notebook.ipynb nella cartella ipython da cui è stato avviato il blocco appunti ipython. Quel file .ipynb può essere rappresentato da un nuovo notebook ipython creato dalla dashboard, con il nome e l'ID del notebook sostituito da qualsiasi cosa tu stia cercando di collegare dal tuo notebook esistente. Non ho provato questo, ma dovrebbe funzionare dal momento che rilasciare un file di estensione .ipynb nella cartella ipython lo mostra nella dashboard.

1

Oltre a Akim di suggerimento - si può collegare a qualsiasi (pi o ipynb) file utilizzando un collegamento relativo, a partire da "modifica", e quindi dalla directory in cui è stato avviato il server.

E.g. in una cella di markdown, se voglio fare riferimento a un file la cui posizione relativa (relativa al mio repository git, che è anche il punto in cui ho lanciato il server notebook) è "./path/to/source.py", aggiungerei:

[link to source](/edit/path/to/source.py)