So importieren Sie NoteBook als Modul in Jupyter (IPython)

Wenn Sie Jupyter verwenden, möchten Sie die Funktionen und Ergebnisse eines anderen Notebooks (ipynb-Datei) wiederverwenden. Es gab eine offizielle Möglichkeit, es als Python-Modul zu importieren, daher werde ich es vorstellen. (Ich werde es in Zukunft viele Male verwenden, also geben Sie die Bedeutung meines Memorandums an.)

Beispiel für eine offizielle Website: http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Importing%20Notebooks.html

Die Möglichkeit dazu besteht darin, ein Notizbuch auszuführen, das Ergebnis als Modul zu registrieren und den Import mit sys.meta_path zu verknüpfen und aufzurufen. Das Notebook wird ausgeführt, wenn der Import aufgerufen wird. Sie können jedoch sicher sein, dass der ursprüngliche Status nicht geändert wird.

Unten ist der Code.

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)
                exec(code, mod.__dict__)
        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:
            key = os.path.sep.join(path)
        if key not in self.loaders:
            self.loaders[key] = NotebookLoader(path)
        return self.loaders[key]

Speichern Sie dies als notebookutil.py usw. Beim Benutzen

import sys
import notebookutil as nbu
sys.meta_path.append(nbu.NotebookFinder())

Dann können Sie das Notizbuch importieren.

import mynotebook

Natürlich können Sie Funktionen und Klassen verwenden, aber da Sie tatsächlich Notebook ausführen, können Sie Variablen mit den Werten zum Zeitpunkt der Ausführung importieren. Super praktisch! !!

Da es ausgeführt wird, werden auch print, plt.show usw. angezeigt. Wenn Sie jedoch die Zelle ausführen, die das Notebook erneut importiert, wird es ausgeblendet.

Dies gibt Ihnen ein komfortableres Jupyter-Leben.

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
[IPython] Freigeben eines IPython-Notizbuchs
Verwendung von IPython Notebook
So verwenden Sie Jupyter Notebook
So zeigen Sie DataFrame als Tabelle in Markdown an
So behandeln Sie den Fehler "Kein Modul mit dem Namen '' '" in Jupyter Notebook | Install with! Pip!
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
Starten eines mit Jupyter Notebook erstellten Python-Programms
So geben Sie eine .py-Datei an, die beim Start in IPython 0.13 geladen werden soll
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 tarnen Sie eine ZIP-Datei als PNG-Datei
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
Zusammenfassung zum Importieren von Dateien in Python 3
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
So benachrichtigen Sie Discord-Kanäle in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So geben Sie "Ketsumaimo" standardmäßig in Python aus
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