webentwicklung-frage-antwort-db.com.de

Wie kann ich von einem anderen ipython-notebook importieren?

Ich möchte eine Funk von einem anderen Ipython-Notebook importieren. Sagen,

common_func.ipnb Hat def func_a()

Wie kann ich beim Erstellen eines neuen Notizbuchs auf das func_a Zugreifen, das sich in einem anderen Notizbuch befindet, sich jedoch im selben Ordner und in derselben ipython-Instanz befindet?

42
ShuaiYuan

In der IPython-Mailingliste wurde dies erst kürzlich besprochen, siehe hier . Schließlich ( hier ) wurde ein Beispielnotizbuch gefunden, das eine Möglichkeit zum Importieren von Code von anderen Notizbüchern zeigt. Dieses Notizbuch finden Sie im examples/notebooks Verzeichnis und sieht aus wie this . Sie müssen nur die NotebookLoader und NotebookFinder Klassen wie gezeigt definieren im Notizbuch. Ich habe es mit IPython 1.1.0 versucht und es funktioniert gut!

12
Jakob

Wenn Sie ipython starten, verwenden Sie das Flag --script: Zum Beispiel

ipython notebook --script

Wenn Sie dann Ihr Notizbuch "common_func.ipnb" speichern, wird auch eine Datei mit dem Titel "common_func.py" erstellt. Sie können Funktionen daraus importieren, indem Sie verwenden

from common_func import func_a

Wenn Sie das Notizbuch common_func ändern, müssen Sie möglicherweise verwenden

reload()
28
Erich Mueller

Zu diesem Zweck gibt es jetzt eine spezielle Funktion namens nbimporter -, die über pip installiert wird.

Verwendung:

import nbimporter
import notebookName as name
name.functionName()

Und wenn Sie notebookName . Ipynb aktualisieren, laden Sie es neu mit:

reload(name)

oder dies für Python 3 ( reload nicht standardmäßig enthalten ):

from importlib import reload
reload(name)
23
yeliabsalohcin

Eine andere Option ist ipynb . Ein netter Vorteil gegenüber nbimporter ist, dass nur die Definitionen importiert werden können, während der Rest des Codes nicht ausgeführt wird. Es ist zu diesem Zeitpunkt ziemlich neu (0,5).

pip install ipynb

Und dann:

import ipynb.fs.defs.my_other_notebook as other
11
Daniel Darabos