2012-09-25 6 views
41

Kann ich ein IPython-Notizbuch mit einem Hyperlink in einer Markdown-Zelle mit einem anderen verbinden? Wenn ich versuche,Links zwischen IPython-Notizbüchern

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

oder

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

Eine neue Registerkarte wird mit rohem unformatiertem Inhalt der ipynb Datei geöffnet. Gibt es eine Möglichkeit, IPython dazu zu bringen, ein anderes Notizbuch über einen Hyperlink in einem neuen Tab zu öffnen?

Antwort

60

Da IPython 2 Sie können genau die Syntax nutzen zu können, versucht:

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

genial. Diese Antwort sollte ganz oben auf der Liste stehen und nicht die veraltete. – thias

0

Leider ist dies praktisch nicht möglich. Der Link müsste zum Notebook ID sein (z. B. /a1e2a88f-3b91-4a4e-8ca1-d4fd7240f750 für den, an dem ich gerade arbeite). Dies ist eine UUID, die beim Start vom IPython-Server erstellt wird. So können Sie den Link von IPython Dashboard kopieren, aber es wird nur gültig sein, bis Sie neu starten.

+1

ich mag hinzufügen, dass es mit der * Strom * Umsetzung praktisch nicht möglich ist. Dies bedeutet nicht, dass es nie möglich sein wird.Folgen Sie [Problem 3056] (https://github.com/ipython/ipython/issues/3056) –

+3

Wie Paul vor einem Jahr sagte, ist es jetzt dank eines Redirect-Handlers möglich, und in der nächsten Version sollte die URL den Dateinamen enthalten Dadurch wird der Prozess für den Endbenutzer nahtlos. – Matt

3

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

Sie können eine json zugreifen Version aller Notebooks von url: $ host/Notebooks

Hier ist ein Ausschnitt, der für mich gearbeitet:

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'] 

dies ändern nach Ihren Bedürfnissen.

** Bei weiterem Lesen stellte ich fest, dass OP auch nach einer neuen Notebook-Erstellung suchte und meine Antwort trotzdem so behielt, wie es mit der Verknüpfung vorhandener Notebooks funktionieren würde.

Eine Möglichkeit, um das Ziel von OP zu erreichen, besteht darin, ein Skript auszuführen, das eine neue notebook.ipynb-Datei in den ipython-Ordner erstellt, aus dem ipython notebook gestartet wurde. Diese .ipynb-Datei kann von einem neuen ipython-Notizbuch, das auf dem Dashboard erstellt wurde, mit einem Template versehen werden, wobei der Name und die ID des Notizbuchs durch das ersetzt werden, was auch immer Sie von Ihrem vorhandenen Notebook aus verknüpfen möchten. Ich habe das nicht versucht, aber sollte funktionieren, seit eine .ipynb-Erweiterungsdatei in den ipython-Ordner fallen zu lassen, zeigt es im Armaturenbrett an.

1

Neben den Vorschlag von Akim - Sie können auf einen beliebigen Link (py oder ipynb) Datei einen relativen Link verwenden, beginnend mit "Bearbeiten" und dann aus dem Verzeichnis, in dem Sie den Server gestartet haben.

z. Wenn ich in einer Markdown-Zelle auf eine Datei verweisen möchte, deren relative Position (relativ zu meinem Git Repo, wo ich den Notebook-Server gestartet habe) "./path/to/source.py" ist, würde ich hinzufügen:

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

Verwandte Themen