Parametrisierung und Zeitplanung#
Mit papermill könnt ihr Notebooks parametrisieren und automatisieren. Ihr könnt die Notebooks zeit- oder ereignisgesteuert ablaufen lassen.
Installieren#
$ pipenv install papermill
Installing papermill…
Adding papermill to Pipfile's [packages]…
✔ Installation Succeeded
…
Verwenden#
Parametrisieren
Der erste Schritt ist die Parametrisierung des Notebook. Dazu werden die Zellen in
als Parameter markiert.Überprüfen
Ihr könnt das Notebook inspizieren, z.B. mit
$ pipenv run papermill --help-notebook docs/refactoring/parameterise/input.ipynb Usage: papermill [OPTIONS] NOTEBOOK_PATH [OUTPUT_PATH] Parameters inferred for notebook 'docs/refactoring/parameterise/input.ipynb': msg: Unknown type (default None)
Ausführen
Es gibt zwei Möglichkeiten, ein Notebook mit Parametern auszuführen:
… via Python API
Die Funktion
execute_notebook
kann aufgerufen werden, um ein Notebook mit einem dict von Parametern auszuführen:execute_notebook(INPUT_NOTEBOOK, OUTPUT_NOTEBOOK, DICTIONARY_OF_PARAMETERS)
z.B. für
input.ipynb
:In [1]: import papermill as pm In [2]: pm.execute_notebook( 'PATH/TO/INPUT_NOTEBOOK.ipynb', 'PATH/TO/OUTPUT_NOTEBOOK.ipynb', parameters=dict(salutation='Hello', name='pythonistas') )
Das Ergebnis ist
output.ipynb
:In [1]: salutation = None name = None In [2]: # Parameters salutation = "Hello" name = "pythonistas" In [3]: from datetime import date today = date.today() print(salutation, name, "– welcome to our event on this " + today.strftime("%A, %d %B %Y")) Out[3]: Hello pythonistas – welcome to our event on this Monday, 13 September 2021
import papermill as pm pm.execute_notebook( 'PATH/TO/INPUT_NOTEBOOK.ipynb', 'PATH/TO/OUTPUT_NOTEBOOK.ipynb', parameters=dict(salutation='Hello', name='pythonistas') )
Siehe auch
… via CLI
$ pipenv run papermill input.ipynb output.ipynb -p salutation 'Hello' -p name 'pythonistas'
Alternativ kann auch eine YAML-Datei mit den Parametern angegeben werden, z.B.
params.yaml
:params.yaml#salutation: "Hello" name: "Pythonistas"
$ pipenv run papermill input.ipynb output.ipynb -f params.yaml
Mit
-b
kann ein base64-kodierte YAML-String angegeben werden, die die Parameterwerte enthält:$ pipenv run papermill input.ipynb output.ipynb -b c2FsdXRhdGlvbjogIkhlbGxvIgpuYW1lOiAiUHl0aG9uaXN0YXMi
Siehe auch
Ihr könnt dem Dateinamen auch einen Zeitstempel hinzufügen:
$ dt=$(date '+%Y-%m-%d_%H:%M:%S') $ pipenv run papermill input.ipynb output_$(date '+%Y-%m-%d_%H:%M:%S').ipynb -f params.yaml
Dies erzeugt eine Ausgabedatei, deren Dateiname einen Zeitstempel enthält, z.B.
output_2021-09-13_10:42:33.ipynb
.Schließlich könnt ihr
crontab -e
verwenden, um die beiden Befehle automatisch zu bestimmten Zeiten auszuführen, z.B. am ersten Tag eines jeden Monats:dt=$(date '+%Y-%m-%d_%H:%M:%S') 0 0 1 * * cd ~/jupyter-notebook && pipenv run papermill input.ipynb output_$(date '+%Y-%m-%d_%H:%M:%S').ipynb -f params.yaml
Speichern
Papermill kann Notebooks an einer Reihe von Orten speichern, einschließlich S3, Azure Data Blobs und Azure Data Lakes. Papermill erlaubt auch, neue Datenspeicher hinzuzufügen.