Wie starte ich ein .ipynb Jupyter Notebook vom Terminal aus?

159

Ich habe Code in einer .ipynb-Datei und habe ihn so weit gebracht, dass ich die "interaktive" Funktion von IPython Notebook nicht mehr wirklich benötige. Ich möchte es einfach direkt über eine Mac Terminal-Befehlszeile ausführen.

Wenn dies nur eine .py-Datei wäre, könnte ich python filename.py einfach über die Befehlszeile ausführen. Gibt es etwas Ähnliches für eine .ipynb-Datei?

Vincent
quelle
So etwas wie das: github.com/paulgb/runipy ?
Idjaw
Sowas in der Art. Ich habe einige inputAussagen in meinem Ipython-Notizbuch, und es scheint Probleme damit zu haben
Vincent

Antworten:

107

Über die Befehlszeile können Sie mit diesem Befehl ein Notizbuch in Python konvertieren:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Möglicherweise müssen Sie das Python Mistune- Paket installieren :

sudo pip install -U mistune
Ditkin
quelle
14
Unterbefehl ipython nbconvertist zugunsten von jupyter nbconvert
PenguinEngineer
6
Ich denke nicht, dass diese Antwort richtig ist. Ich weiß, dass es funktioniert, aber die Frage ist, wie man .ipynb vom Terminal aus ausführt, nicht wie man es in eine .py konvertiert und dann ausführt.
Giacomo
3
Nbconvert schlägt fehl, wenn die Ausführung einer Zelle länger als 30 Sekunden dauert. Möglicherweise möchten Sie sie hinzufügen --ExecutePreprocessor.timeout=600.
bckygldstn
Mit den neuesten Updates funktioniert es so. Sie erhalten einen HTML jupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
-Code
160

Mit nbconvert können Sie Notizbücher mit dem --executeFlag ausführen :

jupyter nbconvert --execute <notebook>

Wenn Sie ein Notizbuch ausführen und ein neues Notizbuch erstellen möchten, können Sie Folgendes hinzufügen --to notebook:

jupyter nbconvert --execute --to notebook <notebook>

Oder wenn Sie das vorhandene Notebook durch die neue Ausgabe ersetzen möchten :

jupyter nbconvert --execute --to notebook --inplace <notebook>

Da dies ein sehr langer Befehl ist, können Sie einen Alias ​​verwenden:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
minrk
quelle
1
Dies scheint nicht hinter der virtuellen Umgebung von conda zu funktionieren
Ramesh-X
9
Dies verwandelt das Notizbuch in eine statische HTML-Seite
Jim Daniël Teunis
3
Dokumentation oder diese und programmatische Möglichkeiten zum Ausführen von Notizbüchern finden Sie unter nbconvert.readthedocs.io/en/latest/…
TomDotTom
Gibt es eine Möglichkeit anzugeben, welche Zellen ausgeführt werden sollen? Zum Beispiel Zelle 10 und alle unten, oder ein Bereich Zelle 10 bis Zelle 20.
Al Conrad
2
Wenn Sie Zellen mit langer Laufzeit haben, können Sie diese auch festlegen --ExecutePreprocessor.timeout=[timeout_in_seconds] ( -1ohne Einschränkung verwenden).
Zaccharie Ramzi
38

Sie können Ihren gesamten Code aus exportieren .ipynbund als .pySkript speichern . Dann können Sie das Skript in Ihrem Terminal ausführen.

Codeexportbeispiel

Ich hoffe es hilft.

pdm
quelle
Diese Antwort (y)
ColinMac
3
beantwortet die ursprüngliche Frage nicht
baxx
14

Führen Sie in Ihrem Terminal ipython aus:

ipython

Suchen Sie dann Ihr Skript und legen Sie es dort ab:

%run your_script.ipynb
Martin Ptacek
quelle
Wie könnte dies in ein Shell-Skript
eingefügt werden
1
Dies ist die praktischste Antwort.
Ed Williams
10

Für neue Version statt:

ipython nbconvert --to python <YourNotebook>.ipynb

Sie können jupyter instend von ipython verwenden:

jupyter nbconvert --to python <YourNotebook>.ipynb
Vijay Panchal
quelle
Wie ist das eine Antwort auf die Frage?
Baxx
4

Update mit zitiertem Kommentar des Autors zur besseren Sichtbarkeit:

Anmerkung des Autors "Dieses Projekt wurde vor Jupyters Ausführungs-API gestartet. Dies ist jetzt die empfohlene Methode zum Ausführen von Notizbüchern über die Befehlszeile. Betrachten Sie runipy als veraltet und nicht gewartet." - Sebastian Palma

Installieren Sie die Runipy-Bibliothek, mit der Sie Ihren Code auf dem Terminal ausführen können

pip install runipy

Nachdem Sie einfach Ihren Code kompiliert haben:

runipy <YourNotebookName>.ipynb

Sie können auch Cronjob versuchen. Alle Informationen finden Sie hier

Achse
quelle
11
Anmerkung des Autors "Dieses Projekt wurde vor Jupyters Ausführungs-API gestartet. Dies ist jetzt die empfohlene Methode zum Ausführen von Notizbüchern über die Befehlszeile. Betrachten Sie runipy als veraltet und nicht gewartet."
Sebastian Palma
3

In meinem Fall war der Befehl, der am besten zu mir passte ,:

jupyter nbconvert --execute --clear-output <notebook>.ipynb

Warum? Dieser Befehl erstellt keine zusätzlichen Dateien (genau wie eine .pyDatei) und die Ausgabe der Zellen wird bei jeder Ausführung des Notizbuchs überschrieben.

Wenn du läufst:

jupyter nbconvert --help

--clear-output Löscht die Ausgabe der aktuellen Datei und speichert sie an Ort und Stelle, wobei das vorhandene Notizbuch überschrieben wird.

Alejandro
quelle
0

Sie können das boarPaket auch verwenden , um Ihr Notizbuch in einem Python-Code auszuführen.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Wenn Sie Ihr Notebook aktualisieren, müssen Sie es nicht erneut in eine Python-Datei konvertieren.


Mehr Informationen bei:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md

Alex
quelle
0

Vom Terminal laufen

jupyter nbconvert --execute --to notebook --inplace --allow-errors --ExecutePreprocessor.timeout=-1 my_nb.ipynb

Das Standardzeitlimit beträgt 30 Sekunden. -1 hebt die Einschränkung auf.

Wenn Sie das Ausgabe-Notizbuch in einem neuen Notizbuch speichern möchten, können Sie das Flag verwenden --output my_new_nb.ipynb

Mohammad S.
quelle
0

Ich hatte das gleiche Problem und fand Papiermühle . Der Vorteil gegenüber den anderen Lösungen besteht darin, dass Sie die Ergebnisse sehen können, während das Notebook ausgeführt wird. Ich finde diese Funktion interessant, wenn das Notebook sehr lange dauert. Es ist sehr einfach zu bedienen:

pip install papermill
papermill notebook.ipynb output.ipynb

Es gibt auch andere nützliche Optionen wie das Speichern der Ausgabedatei in Amazon S3, Google Cloud usw. Weitere Informationen finden Sie auf der Seite.

pglez82
quelle