Làm cách nào để chạy Notebook .upynb Jupyter từ thiết bị đầu cuối?


159

Tôi có một số mã trong tệp .ipynb và đã đưa nó đến điểm mà tôi không thực sự cần tính năng "tương tác" của IPython Notebook. Tôi muốn chạy nó trực tiếp từ Dòng lệnh Mac Terminal.

Về cơ bản, nếu đây chỉ là một tệp .py, tôi tin rằng tôi chỉ có thể thực hiện python filename.py từ dòng lệnh. Có một cái gì đó tương tự cho một tập tin .ipynb?


Một cái gì đó như thế này: github.com/paulgb/runipy ?
idjaw

Một cái gì đó như thế. Tôi có một số inputtuyên bố trong sổ ghi chép ipython của mình và dường như nó có vấn đề với những điều này
Vincent

Câu trả lời:


107

Từ dòng lệnh, bạn có thể chuyển đổi sổ ghi chép thành python bằng lệnh này:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Bạn có thể phải cài đặt gói Mistthon python :

sudo pip install -U mistune

14
Tiểu ban ipython nbconvertkhông được ủng hộ của jupyter nbconvert
PenguinEngineer

6
Tôi không nghĩ câu trả lời này là đúng. Tôi nhận ra nó hoạt động nhưng câu hỏi là làm thế nào để chạy .ipynb từ thiết bị đầu cuối, chứ không phải làm thế nào để chuyển đổi nó thành .py và sau đó chạy nó.
Giacomo

3
Nbconvert sẽ thất bại nếu bất kỳ ô nào mất hơn 30 giây để chạy, bạn có thể muốn thêm --ExecutePreprocessor.timeout=600.
bckygldstn

Các bản cập nhật mới nhất làm cho nó hoạt động như thế này, bạn lấy HTML ra khỏi tệp sổ tayjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak

160

nbconvert cho phép bạn chạy notebook với --executecờ:

jupyter nbconvert --execute <notebook>

Nếu bạn muốn chạy sổ ghi chép và tạo sổ ghi chép mới, bạn có thể thêm --to notebook:

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

Hoặc nếu bạn muốn thay thế sổ ghi chép hiện có bằng đầu ra mới:

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

Vì đó là một lệnh thực sự dài, bạn có thể sử dụng bí danh:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>

1
Điều này dường như không hoạt động đằng sau môi trường ảo conda
Ramesh-X

9
Điều này biến sổ ghi chép thành một trang HTML tĩnh
Jim Daniël Teunis

3
Tài liệu hoặc cách này và các cách chạy máy tính xách tay có thể được tìm thấy tại nbconvert.readthedocs.io/en/latest/ chủ
TomDotTom

Có cách nào để xác định các ô nào sẽ thực thi không? Ví dụ, ô 10 và tất cả bên dưới, hoặc một ô từ 10 đến ô 20.
Al Conrad

2
Ngoài ra, nếu bạn có các ô chạy dài, bạn có thể đặt --ExecutePreprocessor.timeout=[timeout_in_seconds] (sử dụng -1không hạn chế).
Zaccharie Ramzi

38

Bạn có thể xuất tất cả mã của mình từ đó .ipynbvà lưu nó dưới dạng .pytập lệnh. Sau đó, bạn có thể chạy tập lệnh trong thiết bị đầu cuối của bạn.

mã xuất mẫu

Hy vọng nó giúp.


Câu trả lời này (y)
ColinMac

3
không trả lời câu hỏi ban đầu
baxx

14

Trong Terminal của bạn chạy ipython:

ipython

sau đó xác định vị trí tập lệnh của bạn và đặt ở đó:

%run your_script.ipynb

làm thế nào điều này có thể được đưa vào một kịch bản shell
baxx

1
Đây là câu trả lời thiết thực nhất.
Ed Williams

10

Đối với phiên bản mới thay vì:

ipython nbconvert --to python <YourNotebook>.ipynb

Bạn có thể sử dụng jupyter instend của ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb

Làm thế nào đây là một câu trả lời cho câu hỏi?
baxx

4

Cập nhật với trích dẫn bình luận của tác giả để hiển thị tốt hơn:

Lưu ý của tác giả "Dự án này đã bắt đầu trước khi API thực thi của Jupyter, hiện là cách được đề xuất để chạy sổ ghi chép từ dòng lệnh. Hãy xem xét runipy không được chấp nhận và không được biết." - Sebastian

Cài đặt thư viện runipy cho phép chạy mã của bạn trên thiết bị đầu cuối

pip install runipy

Sau khi biên dịch mã của bạn:

runipy <YourNotebookName>.ipynb

Bạn có thể thử cronjob là tốt. Tất cả thông tin ở đây


11
Lưu ý của tác giả "Dự án này đã bắt đầu trước khi API thực thi của Jupyter, hiện là cách được đề xuất để chạy sổ ghi chép từ dòng lệnh. Hãy xem xét runipy không được chấp nhận và không được biết."
Sebastian Palma

3

Trong trường hợp của tôi, lệnh phù hợp nhất với tôi là:

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

Tại sao? Lệnh này không tạo thêm tệp (giống như một.py tệp) và đầu ra của các ô được ghi đè mỗi khi sổ ghi chép được thực thi.

Nếu bạn chạy:

jupyter nbconvert --help

--clear-output Xóa đầu ra của tệp hiện tại và lưu tại chỗ, ghi đè lên sổ ghi chép hiện có.


0

Bạn cũng có thể sử dụng boargói để chạy máy tính xách tay của mình trong mã python.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Nếu bạn cập nhật sổ ghi chép của mình, bạn sẽ không phải chuyển đổi lại thành tệp python.


Biết thêm thông tin tại:

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


0

Từ thiết bị đầu cuối chạy

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

Thời gian chờ mặc định là 30 giây. -1 loại bỏ các hạn chế.

Nếu bạn muốn lưu sổ ghi chép đầu ra vào một sổ ghi chép mới, bạn có thể sử dụng cờ --output my_new_nb.ipynb


0

Tôi đã có cùng một vấn đề và tôi tìm thấy papermill . Ưu điểm so với các giải pháp khác là bạn có thể thấy kết quả trong khi máy tính xách tay đang chạy. Tôi thấy tính năng này thú vị khi máy tính xách tay mất rất nhiều thời gian. Nó rất dễ sử dụng:

pip install papermill
papermill notebook.ipynb output.ipynb

Nó cũng có các tùy chọn tiện dụng khác như lưu tệp đầu ra vào Amazon S3, Google Cloud, v.v. Xem trang để biết thêm thông tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.