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?


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

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>

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.


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

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

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


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.



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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.