Plugin erstellen

Neben den bestehenden Notebook Extensions können auch weitere Plugins hinzugefügt werden. Das Verzeichnis, in dem jupyter_contrib_nbextensions/nbextensions liegt, bekommt ihr mit pip show heraus:

$ pipenv run pip show jupyter_contrib_nbextensions
Name: jupyter-contrib-nbextensions
Version: 0.5.1
Summary: A collection of Jupyter nbextensions.
Home-page: https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git
Author: ipython-contrib and jupyter-contrib developers
Author-email: jupytercontrib@gmail.com
License: BSD
Location: /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages
Requires: lxml, jupyter-contrib-core, nbconvert, jupyter-latex-envs, jupyter-core, pyyaml, jupyter-nbextensions-configurator, notebook, traitlets, jupyter-highlight-selected-word, tornado, ipython-genutils
Required-by:

In diesem Verzeichnis liegen die einzelnen Notebook-Erweiterungen, z.B. mit folgender Struktur:

$ tree
.
├── main.js
├── main.yaml
└── readme.md
main.js

enthält die eigentliche Logik der Erweiterung, z.B.:

define([
    'require',
    'base/js/namespace',
], function (
    requirejs
    $,
    Jupyter,
) {
    "use strict";

    // define default values for config parameters
    var params = {
        my_config_value : 100
    };

    var initialize = function () {
        $.extend(true, params, Jupyter.notebook.config.myextension);

        $('<link/>')
            .attr({
                rel: 'stylesheet',
                type: 'text/css',
                href: requirejs.toUrl('./myextension.css')
            })
            .appendTo('head');
    };

    var load_ipython_extension = function () {
        return Jupyter.notebook.config.loaded.then(initialize);
    };

    return {
        load_ipython_extension : load_ipython_extension
    };
});
main.yaml

yaml-Datei, die die Erweiterung für den Jupyter Extensions Configurator beschreibt.

Type: Jupyter Notebook Extension
Compatibility: 3.x, 4.x, 5.x, 6.x
Name: My notebook extensions
Main: main.js
Link: README.md
Description: |
  My notebook extension helps with the use of Jupyter notebooks.
Parameters:
- none

Weitere Informationen zu den vom Configurator unterstützten Optionen findet ihr auf GitHub: jupyter_nbextensions_configurator.

readme.md

Markdown-Datei, die die Erweiterung beschreibt und angibt, wie sie verwendet werden kann. Dies wird auch im Reiter Nbextensions angezeigt.

Setup Jupyter Notebook Extension

Dies ist eine Erweiterung, die einige Probleme beim Arbeiten mit Notebooks behebt, die Joel Grus auf der JupyterCon 2018 vorgetragen hat: I Don’t Like Notebooks:

  • sie fordert euch auf, das Notebook zu benennen

  • sie erstellt eine Vorlage, um die Dokumentation zu verbessern

  • sie importiert und konfiguriert häufig verwendete Bibliotheken

Installation

  1. Findet heraus, wo die Notebook-Extensions installiert sind:

    $ pipenv run pip show jupyter_contrib_nbextensions
    Name: jupyter-contrib-nbextensions
    Version: 0.5.1
    Summary: A collection of Jupyter nbextensions.
    Home-page: https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git
    Author: ipython-contrib and jupyter-contrib developers
    Author-email: jupytercontrib@gmail.com
    License: BSD
    Location: /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages
    Requires: lxml, jupyter-contrib-core, nbconvert, jupyter-latex-envs, jupyter-core, pyyaml, jupyter-nbextensions-configurator, notebook, traitlets, jupyter-highlight-selected-word, tornado, ipython-genutils
    Required-by:
    
  2. Ladet das Setup-Verzeichnis in jupyter_contrib_nbextensions/nbextensions/ herunter.

  3. Installiert die Erweiterung mit

    $ pipenv run jupyter contrib nbextensions install --user
    
    [I 10:54:46 InstallContribNbextensionsApp] Installing /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages/jupyter_contrib_nbextensions/nbextensions/setup -> setup
    [I 10:54:46 InstallContribNbextensionsApp] Making directory: /Users/veit/Library/Jupyter/nbextensions/setup/
    [I 10:54:46 InstallContribNbextensionsApp] Copying: /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages/jupyter_contrib_nbextensions/nbextensions/setup/setup.yaml -> /Users/veit/Library/Jupyter/nbextensions/setup/setup.yaml
    [I 10:54:46 InstallContribNbextensionsApp] Copying: /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages/jupyter_contrib_nbextensions/nbextensions/setup/README.md -> /Users/veit/Library/Jupyter/nbextensions/setup/README.md
    [I 10:54:46 InstallContribNbextensionsApp] Copying: /Users/veit/.local/share/virtualenvs/jupyter-tutorial--q5BvmfG/lib/python3.7/site-packages/jupyter_contrib_nbextensions/nbextensions/setup/main.js -> /Users/veit/Library/Jupyter/nbextensions/setup/main.js
    [I 10:54:46 InstallContribNbextensionsApp] - Validating: OK
    
    
  4. Aktiviert die Setup-Extension in Nbextensions.

Schließlich könnt ihr ein neues Notebook erstellen, das dann folgende Struktur aufweist: setup.ipynb.