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.