So importieren Sie NoteBook als Modul in Jupyter (IPython)

Die Verwendung einer anderen Notebook-Funktion mit Jupyter Notebook wird auch auf der offiziellen Website und in Qiita vorgestellt. Ich werde Ihnen jedoch zeigen, wie Sie es etwas komfortabler gestalten können.

Es ist im Grunde das gleiche wie die offizielle Website. https://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Importing%20Notebooks.html

Qiita hat auch einen guten Einführungsartikel. https://qiita.com/tdual/items/32d3918b4c8dd1f703e7

Die Schwierigkeit besteht jedoch darin, dass beim Importieren der gesamte Inhalt des Notizbuchs ausgeführt wird. Ich möchte nur die in einigen Zellen definierten Variablen und Funktionen anstelle aller Zellen in anderen Notizbüchern verwenden! Markieren Sie in fastais nbdev in einem solchen Fall "#export" am Anfang der Zelle. Aber ich möchte nicht wie nbdev übertreiben.

Ändern Sie daher die NotebookLoader-Klasse des Programms auf der offiziellen Website so, dass nur die am Anfang mit "#export" gekennzeichneten Zellen importiert werden.

import io, os, sys, types
from IPython import get_ipython
from nbformat import read
from IPython.core.interactiveshell import InteractiveShell

def find_notebook(fullname, path=None):
    name = fullname.rsplit('.', 1)[-1]
    if not path:
        path = ['']
    for d in path:
        nb_path = os.path.join(d, name + ".ipynb")
        if os.path.isfile(nb_path):
            return nb_path
        nb_path = nb_path.replace("_", " ")
        if os.path.isfile(nb_path):
            return nb_path

class NotebookLoader(object):
    def __init__(self, path=None):
        self.shell = InteractiveShell.instance()
        self.path = path

    def load_module(self, fullname):
        path = find_notebook(fullname, self.path)
        with io.open(path, 'r', encoding='utf-8') as f:
            nb = read(f, 4)
        mod = types.ModuleType(fullname)
        mod.__file__ = path
        mod.__loader__ = self
        mod.__dict__['get_ipython'] = get_ipython
        sys.modules[fullname] = mod
        save_user_ns = self.shell.user_ns
        self.shell.user_ns = mod.__dict__
        try:
          for cell in nb.cells:
            if cell.cell_type == 'code':
                code = self.shell.input_transformer_manager.transform_cell(cell.source)
                #Am Anfang der Zelle"#export"Führen Sie nur die als beschriebene Zelle aus
                if code.startswith("#export"):
                    exec(code, mod.__dict__)
        except Exception as ex:
            #In der Zelle"#export"Ich vergesse oft hinzuzufügen, also lassen Sie mich wissen, wo der Fehler aufgetreten ist
            print(code)
            raise ex
        finally:
            self.shell.user_ns = save_user_ns
        return mod

class NotebookFinder(object):
    def __init__(self):
        self.loaders = {}

    def find_module(self, fullname, path=None):
        nb_path = find_notebook(fullname, path)
        if not nb_path:
            return
        key = path
        if path:
            # lists aren't hashable
            key = os.path.sep.join(path)
        if key not in self.loaders:
            self.loaders[key] = NotebookLoader(path)
        return self.loaders[key]

Speichern Sie dies mit einem Dateinamen wie nb_finder.py. Beim Benutzen

import sys
import nb_finder as nbf
sys.meta_path.append(nbf.NotebookFinder())

Danach können Sie andere Notebooks importieren.

from mynotebook import *

Fügen Sie im Import-Quellnotizbuch am Anfang der Zelle "#export" hinzu, das die Variablen und Funktionen beschreibt, die Sie in anderen Notizbüchern verwenden möchten. Vergessen Sie nicht, #export zu der Zelle hinzuzufügen, die die Importanweisung enthält, die zum Ausführen dieser Zelle erforderlich ist. Möglicherweise möchten Sie auch #hide für eine unerwünschte Zelle anstelle von #export angeben, um zu verhindern, dass diese Zelle importiert wird.

Recommended Posts

So importieren Sie NoteBook als Modul in Jupyter (IPython)
So importieren Sie NoteBook als Modul in Jupyter (IPython)
So führen Sie Befehle mit einem Jupyter-Notebook aus
So beleben Sie Zellen in iPython Notebook wieder
So lösen Sie ModuleNotFoundError auf: Kein Modul mit dem Namen XXX in Jupyter Notebook
So debuggen Sie mit Jupyter oder iPython Notebook
Verwendung von IPython Notebook
So verwenden Sie Jupyter Notebook
So zeigen Sie DataFrame als Tabelle in Markdown an
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Post Jupyter Notebook als Blog-Beitrag
So importieren Sie Dateien in Python an eine beliebige Stelle
Wie bekomme ich Stacktrace in Python?
So importieren Sie Ihr eigenes Modul mit jupyter
Verwendung des Jupyter-Notebooks mit ABCI
Jupyter Notebook Grundlagen der Verwendung
Verwendung des Jupyter-Notebooks [super basic]
[Kleine Geschichte] So speichern Sie Matplotlib-Diagramme in einem Stapel mit Jupyter
So beheben Sie einen Fehler, bei dem das Jupyter-Notebook nicht automatisch gestartet wird
So installieren Sie das Python-Paket in einer lokalen Umgebung als allgemeiner Benutzer
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
So verbergen Sie Warnungen, die sich nicht auf die Ausführung in Jupyter Notebook auswirken
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie eine JSON-Datei in Python
So implementieren Sie eine Verlaufsauswahl in Houdini
So fügen Sie einen Suchpfad für Python-Module hinzu
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
So deinstallieren Sie ein mit setup.py installiertes Modul
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
[Linux] [Kernelmodul] Übergeben von Parametern als Argumente beim Laden eines ladbaren Kernelmoduls
Was tun, wenn das Diagramm nicht auf dem Jupyter-Notizbuch (Ipython) angezeigt wird?
Was tun, wenn NotADirectoryError: [Errno 20] Kein Verzeichnis: 'xdg-settings' wird im Jupyter-Notizbuch angezeigt
Erstellen Sie eine PYNQ-Umgebung auf Ultra96 V2 und melden Sie sich bei Jupyter Notebook an
So stellen Sie die Schriftbreite des in pyenv eingegebenen Jupyter-Notizbuchs gleich
Verwendung von IPython
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ausführen des in Ansible Tower hinzugefügten Ansible-Moduls
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Wie man ein praktisches Seminar mit Jupyter mit Docker abhält
Zeichnen einer Baumstruktur mit D3.js in Jupyter Notebook
Eine einfache Möglichkeit, ein Importmodul mit jupyter zu erstellen
So starten Sie Jupyter Notebook sofort vom Terminal aus
So beheben Sie SSL-Modulfehler in einer Anaconda-Umgebung
So (erzwingen) Sie die Folien eines IPython-Notizbuchs als PDF
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So verweisen Sie auf statische Dateien in einem Django-Projekt
So zeigen Sie den Fortschrittsbalken auf dem Jupyter-Notizbuch an, um den Fortschritt anzuzeigen
[Linux] Wie Sie Ihre IP in eine Variable einfügen
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS