Jak uruchomić notatnik .ipynb Jupyter z terminala?

159

Mam kod w pliku .ipynb i doszedłem do tego, że nie potrzebuję "interaktywnej" funkcji IPython Notebook. Chciałbym po prostu uruchomić go bezpośrednio z wiersza poleceń terminala Mac.

Zasadniczo, gdyby był to tylko plik .py, myślę, że mógłbym po prostu zrobić python filename.py z wiersza poleceń. Czy jest coś podobnego do pliku .ipynb?

Vincent
źródło
Coś takiego: github.com/paulgb/runipy ?
idjaw
Coś w tym stylu. Mam kilka inputoświadczeń w moim notatniku ipython i wydaje się, że mam z nimi problem
Vincent,

Odpowiedzi:

107

Z wiersza poleceń możesz przekonwertować notatnik na Pythona za pomocą tego polecenia:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Być może będziesz musiał zainstalować pakiet python mistune :

sudo pip install -U mistune
ditkin
źródło
14
Podkomenda ipython nbconvertzostała wycofana na korzyść jupyter nbconvert
PenguinEngineer
6
Nie sądzę, aby ta odpowiedź była poprawna. Zdaję sobie sprawę, że to działa, ale pytanie brzmi, jak uruchomić .ipynb z terminala, a nie jak przekonwertować go na .py, a następnie uruchomić.
Giacomo
3
Nbconvert nie powiedzie się, jeśli jakakolwiek komórka działa dłużej niż 30 sekund, możesz chcieć dodać --ExecutePreprocessor.timeout=600.
bckygldstn
Najnowsze aktualizacje sprawiają, że działa to w ten sposób, otrzymujesz HTML z pliku notatnikajupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak
160

nbconvert pozwala na uruchamianie notebooków z --executeflagą:

jupyter nbconvert --execute <notebook>

Jeśli chcesz uruchomić notatnik i stworzyć nowy notatnik, możesz dodać --to notebook:

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

Lub jeśli chcesz zastąpić istniejący notatnik nowym wyjściem:

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

Ponieważ jest to naprawdę długie polecenie, możesz użyć aliasu:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
minrk
źródło
1
Wydaje się, że to nie działa za wirtualnym środowiskiem Conda
Ramesh-X
9
To zmienia notatnik w statyczną stronę HTML
Jim Daniël Teunis
3
Dokumentację lub tę i programowe sposoby uruchamiania notebooków można znaleźć na stronie nbconvert.readthedocs.io/en/latest/ ...
TomDotTom
Czy istnieje sposób, aby określić, które komórki mają zostać wykonane? Na przykład komórka 10 i wszystkie poniżej lub komórka zakresu od 10 do komórki 20.
Al Conrad,
2
Ponadto, jeśli masz długo działające komórki, możesz ustawić --ExecutePreprocessor.timeout=[timeout_in_seconds] ( -1bez ograniczeń).
Zaccharie Ramzi
38

Możesz wyeksportować cały kod z programu .ipynbi zapisać go jako .pyskrypt. Następnie możesz uruchomić skrypt w swoim terminalu.

przykład eksportu kodu

Mam nadzieję, że to pomoże.

pdm
źródło
Ta odpowiedź (y)
ColinMac
3
nie odpowiada na oryginalne pytanie
baxx
14

W swoim Terminalu uruchom ipython:

ipython

następnie znajdź swój skrypt i umieść tam:

%run your_script.ipynb
Martin Ptacek
źródło
jak można to umieścić w skrypcie powłoki
baxx
1
To jest najbardziej praktyczna odpowiedź.
Ed Williams
10

Dla nowej wersji zamiast:

ipython nbconvert --to python <YourNotebook>.ipynb

Możesz użyć jupyter instend of ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb
Vijay Panchal
źródło
jak to jest odpowiedź na pytanie?
baxx
4

Aktualizacja z cytowanym komentarzem autora dla lepszej widoczności:

Uwaga autora „Ten projekt rozpoczął się przed uruchomieniem API Jupytera, które jest obecnie zalecanym sposobem uruchamiania notatników z wiersza poleceń. Rozważ runipy jako przestarzałe i nieobsługiwane”. - Sebastian Palma

Zainstaluj bibliotekę runipy, która umożliwia uruchamianie kodu na terminalu

pip install runipy

Po prostu skompiluj swój kod:

runipy <YourNotebookName>.ipynb

Możesz także spróbować cronjob. Wszystkie informacje są tutaj


źródło
11
Uwaga autora „Ten projekt rozpoczął się przed uruchomieniem API Jupytera, które jest obecnie zalecanym sposobem uruchamiania notatników z wiersza poleceń. Rozważ runipy jako przestarzałe i nieobsługiwane”.
Sebastian Palma,
3

W moim przypadku najbardziej odpowiadało mi polecenie:

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

Czemu? To polecenie nie tworzy dodatkowych plików (podobnie jak .pyplik), a dane wyjściowe komórek są nadpisywane za każdym razem, gdy wykonywany jest notatnik.

Jeśli biegasz:

jupyter nbconvert --help

--clear-output Wyczyść dane wyjściowe bieżącego pliku i zapisz w miejscu, nadpisując istniejący notatnik.

alejandro
źródło
0

Możesz również użyć boarpakietu do uruchomienia notebooka w kodzie Pythona.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Jeśli zaktualizujesz swój notatnik, nie będziesz musiał ponownie konwertować go do pliku Python.


Więcej informacji na:

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

Alex
źródło
0

Z terminalu biegnij

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

Domyślny limit czasu to 30 sekund. -1 znosi ograniczenie.

Jeśli chcesz zapisać zeszyt wyników w nowym notatniku, możesz użyć flagi --output my_new_nb.ipynb

Mohammad S.
źródło
0

Miałem ten sam problem i znalazłem papiernię . Zaletą w porównaniu z innymi rozwiązaniami jest to, że można zobaczyć wyniki podczas pracy notebooka. Uważam tę funkcję za interesującą, gdy notebook zajmuje bardzo dużo czasu. Jest bardzo łatwy w użyciu:

pip install papermill
papermill notebook.ipynb output.ipynb

Posiada również inne przydatne opcje, takie jak zapisywanie pliku wyjściowego w Amazon S3, Google Cloud itp. Więcej informacji na stronie.

pglez82
źródło