Bagaimana menjalankan Notebook Jupyter .ipynb dari terminal?

160

Saya memiliki beberapa kode dalam file .ipynb dan mendapatkannya ke titik di mana saya tidak benar-benar membutuhkan fitur "interaktif" dari IPython Notebook. Saya ingin menjalankannya langsung dari Command Line Terminal Mac.

Pada dasarnya, jika ini hanya file .py, saya yakin saya bisa melakukan python filename.py dari baris perintah. Apakah ada yang serupa dengan file .ipynb?

Vincent
sumber
Sesuatu seperti ini: github.com/paulgb/runipy ?
idjaw
Sesuatu seperti itu. Saya punya beberapa inputpernyataan di notebook ipython saya, dan sepertinya ada masalah dengan ini
Vincent

Jawaban:

107

Dari baris perintah, Anda dapat mengonversi notebook ke python dengan perintah ini:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Anda mungkin harus menginstal paket python mistune :

sudo pip install -U mistune
ditkin
sumber
14
Subcommand ipython nbconvertsudah ditinggalkan mendukung jupyter nbconvert
PenguinEngineer
6
Saya kira jawaban ini tidak benar. Saya sadari itu berfungsi tetapi pertanyaannya adalah bagaimana menjalankan .ipynb dari terminal, bukan bagaimana mengubahnya menjadi .py dan kemudian menjalankannya.
Giacomo
3
Nbconvert akan gagal jika sel mana pun membutuhkan waktu lebih dari 30an untuk dijalankan, Anda mungkin ingin menambahkan --ExecutePreprocessor.timeout=600.
bckygldstn
Pembaruan terbaru membuatnya berfungsi seperti ini, Anda mendapatkan HTML dari file notebookjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak
160

nbconvert memungkinkan Anda menjalankan notebook dengan --executebendera:

jupyter nbconvert --execute <notebook>

Jika Anda ingin menjalankan buku catatan dan menghasilkan buku catatan baru, Anda dapat menambahkan --to notebook:

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

Atau jika Anda ingin mengganti notebook yang ada dengan output baru:

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

Karena itu perintah yang sangat panjang, Anda dapat menggunakan alias:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
minrk
sumber
1
Ini sepertinya tidak bekerja di belakang lingkungan virtual conda
Ramesh-X
9
Ini mengubah notebook menjadi halaman HTML statis
Jim Daniël Teunis
3
Dokumentasi atau ini dan cara terprogram untuk menjalankan notebook dapat ditemukan di nbconvert.readthedocs.io/en/latest/…
TomDotTom
Apakah ada cara untuk menentukan sel mana yang akan dieksekusi? Misalnya sel 10 dan semua di bawah ini, atau sel rentang 10 hingga sel 20.
Al Conrad
2
Juga, jika Anda memiliki sel yang berjalan lama, Anda dapat mengatur --ExecutePreprocessor.timeout=[timeout_in_seconds] (gunakan -1tanpa batasan).
Zaccharie Ramzi
38

Anda dapat mengekspor semua kode Anda .ipynbdan menyimpannya sebagai .pyskrip. Kemudian Anda dapat menjalankan skrip di terminal Anda.

contoh kode ekspor

Semoga ini bisa membantu.

pdm
sumber
Jawaban ini (y)
ColinMac
3
tidak menjawab pertanyaan aslinya
baxx
14

Di Terminal Anda jalankan ipython:

ipython

kemudian cari skrip Anda dan taruh di sana:

%run your_script.ipynb
Martin Ptacek
sumber
bagaimana ini bisa dimasukkan ke dalam skrip shell
baxx
1
Ini adalah jawaban yang paling praktis.
Ed Williams
10

Untuk versi baru, alih-alih:

ipython nbconvert --to python <YourNotebook>.ipynb

Anda dapat menggunakan jupyter instend dari ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb
Vijay Panchal
sumber
bagaimana ini jawaban untuk pertanyaan itu?
baxx
4

Perbarui dengan komentar yang dikutip oleh penulis untuk visibilitas yang lebih baik:

Catatan penulis "Proyek ini dimulai sebelum Jupyter's mengeksekusi API, yang sekarang merupakan cara yang disarankan untuk menjalankan notebook dari baris perintah. Pertimbangkan runipy usang dan tidak terawat." - Sebastian Palma

Instal perpustakaan runipy yang memungkinkan menjalankan kode Anda di terminal

pip install runipy

Setelah hanya mengkompilasi kode Anda:

runipy <YourNotebookName>.ipynb

Anda dapat mencoba cronjob juga. Semua informasi ada di sini

Sumbu
sumber
11
Catatan penulis "Proyek ini dimulai sebelum Jupyter's mengeksekusi API, yang sekarang merupakan cara yang disarankan untuk menjalankan notebook dari baris perintah. Pertimbangkan runipy usang dan tidak terawat."
Sebastian Palma
3

Dalam kasus saya, perintah yang paling cocok untuk saya adalah:

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

Mengapa? Perintah ini tidak membuat file tambahan (seperti.py file) dan output sel ditimpa setiap kali notebook dijalankan.

Jika Anda menjalankan:

jupyter nbconvert --help

--clear-output Hapus keluaran file saat ini dan simpan di tempatnya, timpa notebook yang ada.

alejandro
sumber
0

Anda juga dapat menggunakan boarpaket untuk menjalankan notebook Anda dalam kode python.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Jika Anda memperbarui buku catatan, Anda tidak perlu mengubahnya lagi menjadi file python.


Informasi lebih lanjut di:

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

Alex
sumber
0

Dari terminal run

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

Batas waktu default adalah 30 detik. -1 menghapus batasan.

Jika Anda ingin menyimpan notebook keluaran ke notebook baru Anda dapat menggunakan bendera --output my_new_nb.ipynb

Mohammad S
sumber
0

Saya memiliki masalah yang sama dan saya menemukan papermill . Kelebihan dari solusi lain adalah Anda dapat melihat hasilnya saat notebook berjalan. Saya menemukan fitur ini menarik ketika notebook membutuhkan waktu sangat lama. Sangat mudah digunakan:

pip install papermill
papermill notebook.ipynb output.ipynb

Ini juga, opsi praktis lainnya seperti menyimpan file output ke Amazon S3, Google Cloud, dll. Lihat halaman untuk informasi lebih lanjut.

pglez82
sumber