Comment importer NoteBook en tant que module dans Jupyter (IPython)

Si vous utilisez Jupyter, vous souhaiterez réutiliser les fonctions et les résultats d'un autre notebook (fichier ipynb). Il y avait un moyen officiel de l'importer en tant que module python, je vais donc le présenter. (Je vais l'utiliser plusieurs fois dans le futur, alors incluez la signification de mon mémorandum)

Exemple de site officiel: http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Importing%20Notebooks.html

Pour ce faire, exécutez notebook, enregistrez le résultat en tant que module et utilisez sys.meta_path pour raccorder et appeler import. Le notebook s'exécutera lorsque l'importation sera appelée, mais soyez assuré qu'il ne changera pas son état d'origine.

Ci-dessous le 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]

Enregistrez-le sous notebookutil.py etc. Lors de l'utilisation

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

Ensuite, vous pouvez importer le notebook.

import mynotebook

Bien sûr, vous pouvez utiliser des fonctions et des classes, mais comme vous exécutez réellement notebook, vous pouvez importer des variables avec les valeurs au moment de l'exécution. Super pratique! !!

De plus, comme il est en cours d'exécution, print, plt.show, etc. sont affichés, mais si vous exécutez à nouveau la cellule qui importe le notebook, il disparaîtra.

Cela vous donnera une vie Jupyter plus confortable.

Recommended Posts

Comment importer NoteBook en tant que module dans Jupyter (IPython)
Comment importer NoteBook en tant que module dans Jupyter (IPython)
Comment exécuter des commandes avec Jupyter Notebook
Comment faire revivre des cellules dans le notebook iPython
Comment résoudre ModuleNotFoundError: aucun module nommé XXX dans Jupyter Notebook
Comment déboguer avec Jupyter ou iPython Notebook
[IPython] Comment partager un bloc-notes IPython
Comment utiliser IPython Notebook
Comment utiliser Jupyter Notebook
Comment afficher DataFrame sous forme de tableau dans Markdown
Comment traiter l'erreur "Aucun module nommé" "" dans Jupyter Notebook | Installer avec! Pip!
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
Publier Jupyter Notebook en tant que billet de blog
Comment importer des fichiers où vous le souhaitez en Python
Comment démarrer par lots un programme Python créé avec le notebook Jupyter
Comment spécifier un fichier .py à charger au démarrage dans IPython 0.13
Comment obtenir stacktrace en python
Pour importer votre propre module avec jupyter
Comment utiliser le notebook Jupyter avec ABCI
Jupyter Notebook Principes d'utilisation
Comment utiliser le bloc-notes Jupyter [super basique]
[Petite histoire] Comment enregistrer des graphiques matplotlib dans un lot avec Jupyter
Comment corriger un bug qui empêche le notebook Jupyter de démarrer automatiquement
Comment installer le package python dans un environnement local en tant qu'utilisateur général
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Comment masquer les avertissements qui n'affectent pas l'exécution dans Jupyter Notebook
Comment déguiser un fichier ZIP en fichier PNG
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Résumé de la façon d'importer des fichiers dans Python 3
Comment créer un fichier JSON en Python
Comment implémenter un sélecteur de dégradé dans Houdini
Comment ajouter un chemin de recherche de module Python
Pour ajouter un module à python que vous mettez dans Julialang
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment générer "Ketsumaimo" en standard en Python
Comment créer une API Rest dans Django
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Comment désinstaller un module installé à l'aide de setup.py
Comment lire des fichiers dans différents répertoires
Comment se moquer d'une fonction publique dans Pytest
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
[Linux] [module noyau] Comment passer des paramètres comme arguments lors du chargement d'un module noyau chargeable
Que faire lorsque le graphique n'apparaît pas sur le notebook Jupyter (IPython)
Que faire si NotADirectoryError: [Errno 20] Pas un répertoire: 'xdg-settings' apparaît dans le notebook jupyter
Créez un environnement PYNQ sur Ultra96 V2 et connectez-vous à Jupyter Notebook
Comment rendre la largeur de police du notebook jupyter mis dans pyenv égale
Comment utiliser IPython
Comment spécifier un schéma dans les paramètres de la base de données Django
Comment convertir / restaurer une chaîne avec [] en python
Comment exécuter le module Ansible ajouté dans Ansible Tower
Essayez de créer un module Python en langage C
[Python] Comment développer des variables dans une chaîne de caractères
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Comment organiser un séminaire pratique à l'aide de Jupyter à l'aide de Docker
Dessiner une structure arborescente avec D3.js dans Jupyter Notebook
Un moyen simple de créer un module d'importation avec jupyter
Comment lancer instantanément Jupyter Notebook à partir du terminal