Как запустить .ipynb Jupyter Notebook с терминала?

160

У меня есть некоторый код в файле .ipynb, и я пришел к тому, что мне действительно не нужна «интерактивная» функция IPython Notebook. Я хотел бы просто запустить его прямо из командной строки Mac Terminal.

По сути, если бы это был просто файл .py, я думаю, что я мог бы просто сделать python filename.py из командной строки. Есть ли что-то похожее для файла .ipynb?

Винсент
источник
Примерно так: github.com/paulgb/runipy ?
idjaw
Что-то такое. У меня есть некоторые inputутверждения в моей записной книжке ipython, и, похоже, у них проблемы с ними
Винсент

Ответы:

107

Из командной строки вы можете преобразовать ноутбук в python с помощью этой команды:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Возможно, вам придется установить пакет Python Mistune :

sudo pip install -U mistune
Диткин
источник
14
Подкоманда ipython nbconvertустарела в пользу jupyter nbconvert
PenguinEngineer
6
Я не думаю, что этот ответ правильный. Я понимаю, что это работает, но вопрос в том, как запустить .ipynb из терминала, а не в том, как преобразовать его в .py и затем запустить.
Джакомо
3
Вы можете добавить Nbconvert, если для запуска какой-либо ячейки потребуется более 30 секунд --ExecutePreprocessor.timeout=600.
bckygldstn
Последние обновления заставляют его работать так: вы получаете HTML-файл из блокнотаjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak
160

nbconvert позволяет запускать блокноты с --executeфлагом:

jupyter nbconvert --execute <notebook>

Если вы хотите запустить блокнот и создать новый блокнот, вы можете добавить --to notebook:

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

Или, если вы хотите заменить существующий ноутбук новым выходом:

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

Поскольку это действительно длинная команда, вы можете использовать псевдоним:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>
minrk
источник
1
Кажется, что это не работает за виртуальной средой conda
Ramesh-X
9
Это превращает блокнот в статическую HTML-страницу
Джим Даниэль Теунис,
3
Документацию или этот и программные способы запуска ноутбуков можно найти по адресу nbconvert.readthedocs.io/en/latest/…
TomDotTom
Есть ли способ указать, какие ячейки выполнять? Например, ячейка 10 и все ниже, или ячейка диапазона от 10 до ячейки 20.
Аль Конрад,
2
Кроме того, если у вас есть долго работающие ячейки, вы можете установить --ExecutePreprocessor.timeout=[timeout_in_seconds] (используйте -1без ограничений).
Закчарие Рамзи
38

Вы можете экспортировать весь свой код .ipynbи сохранить его как .pyскрипт. Затем вы можете запустить скрипт в вашем терминале.

пример экспорта кода

Надеюсь, поможет.

ДПМ
источник
Этот ответ (у)
ColinMac
3
не отвечает на первоначальный вопрос
baxx
14

В вашем терминале запустите ipython:

ipython

затем найдите свой скрипт и поместите туда:

%run your_script.ipynb
Мартин Птачек
источник
как это можно поместить в скрипт оболочки
baxx
1
Это самый практичный ответ.
Эд Уильямс
10

Для новой версии вместо:

ipython nbconvert --to python <YourNotebook>.ipynb

Вы можете использовать jupyter вместо ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb
Виджай Панчал
источник
как это ответ на вопрос?
Baxx
4

Обновление с цитируемым комментарием автора для лучшей видимости:

Примечание автора: «Этот проект начался до API выполнения Jupyter, который теперь является рекомендуемым способом запуска записных книжек из командной строки. Считайте, что runipy устарел и не поддерживается». - Себастьян Пальма

Установите библиотеку runipy, которая позволяет запускать ваш код на терминале

pip install runipy

После просто компиляции вашего кода:

runipy <YourNotebookName>.ipynb

Вы также можете попробовать cronjob. Вся информация здесь

Ось
источник
11
Примечание автора: «Этот проект был запущен до выполнения API выполнения Jupyter, который теперь является рекомендуемым способом запуска записных книжек из командной строки. Считайте, что runipy устарел и не поддерживается».
Себастьян Пальма
3

В моем случае команда, которая больше всего подходила мне, была:

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

Зачем? Эта команда не создает дополнительные файлы (как .pyфайл), и выходные данные ячеек перезаписываются при каждом выполнении записной книжки.

Если вы запускаете:

jupyter nbconvert --help

--clear-output Очистить вывод текущего файла и сохранить на месте, перезаписав существующий блокнот.

Alejandro
источник
0

Вы также можете использовать boarпакет для запуска вашей записной книжки в коде Python.

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Если вы обновите свой блокнот, вам больше не придется конвертировать его в файл Python.


Больше информации на:

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

Alex
источник
0

Из терминала беги

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

Время ожидания по умолчанию составляет 30 секунд. -1 снимает ограничение.

Если вы хотите сохранить записную книжку в новую записную книжку, вы можете использовать флаг --output my_new_nb.ipynb

Мохаммед С
источник
0

У меня была такая же проблема, и я нашел бумажную фабрику . Преимущество перед другими решениями заключается в том, что вы можете видеть результаты во время работы ноутбука. Я нахожу эту функцию интересной, когда ноутбук занимает много времени. Он очень прост в использовании:

pip install papermill
papermill notebook.ipynb output.ipynb

Он также имеет другие удобные опции, такие как сохранение выходного файла в Amazon S3, Google Cloud и т. Д. См. Страницу для получения дополнительной информации.

pglez82
источник