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

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

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


person Vincent    schedule 22.02.2016    source источник
comment
Примерно так: github.com/paulgb/runipy?   -  person idjaw    schedule 22.02.2016


Ответы (11)


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

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

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

sudo pip install -U mistune
person ditkin    schedule 22.02.2016
comment
Подкоманда ipython nbconvert устарела в пользу jupyter nbconvert - person PenguinEngineer; 06.11.2017
comment
Я не думаю, что это правильный ответ. Я понимаю, что это работает, но вопрос в том, как запустить .ipynb с терминала, а не как преобразовать его в .py, а затем запустить. - person Giacomo; 23.11.2018
comment
Nbconvert завершится ошибкой, если выполнение какой-либо ячейки займет больше 30 секунд, вы можете добавить --ExecutePreprocessor.timeout=600. - person bckygldstn; 24.01.2019
comment
Последние обновления заставляют его работать так: вы получаете HTML-код из файла записной книжки jupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb - person b-ak; 16.09.2019

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>
person minrk    schedule 23.02.2016
comment
Это превращает записную книжку в статическую HTML-страницу. - person Jim Daniël Teunis; 29.09.2018
comment
Документацию или этот и программный способы запуска записных книжек можно найти на странице nbconvert .readthedocs.io / en / latest / - person TomDotTom; 05.03.2019
comment
Есть ли способ указать, какие ячейки выполнять? Например, ячейка 10 и все ниже или диапазон от ячейки 10 до ячейки 20. - person Al Conrad; 25.07.2019
comment
Кроме того, если у вас есть давно работающие ячейки, можно установить --ExecutePreprocessor.timeout=[timeout_in_seconds] (используйте -1 без ограничений). - person Zaccharie Ramzi; 07.08.2019
comment
Последние обновления заставляют его работать так: вы получаете HTML-код из файла записной книжки jupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb - person b-ak; 16.09.2019

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

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

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

person pdm    schedule 22.02.2016
comment
не отвечает на исходный вопрос - person baxx; 25.02.2020

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

ipython

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

%run your_script.ipynb
person Martin Ptacek    schedule 08.11.2019
comment
как это можно было поместить в сценарий оболочки - person baxx; 25.02.2020
comment
@baxx ipython -c "%run your_script.ipynb" - person Keto; 04.10.2020
comment
можно с этим сделать Makefile? - person Carlos Mougan; 08.04.2021

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

ipython nbconvert --to python <YourNotebook>.ipynb

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

jupyter nbconvert --to python <YourNotebook>.ipynb
person Vijay Panchal    schedule 05.04.2018
comment
как это ответ на вопрос? - person baxx; 25.02.2020

В моем случае мне больше всего подошла команда:

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

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

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

jupyter nbconvert --help

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

person alejandro    schedule 18.10.2019

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

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

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

pip install runipy

После компиляции кода:

runipy <YourNotebookName>.ipynb

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

person Axis    schedule 10.02.2018
comment
Примечание автора. Этот проект был запущен до Jupyter execute API, который теперь является рекомендуемым способом запуска записных книжек из командной строки. Считайте runipy устаревшим и неподдерживаемым. - person Sebastian Palma; 23.03.2018

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

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

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


Более подробная информация по адресу:

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

person Alex    schedule 24.05.2020

С терминала запустить

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

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

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

person Mohammad S    schedule 07.07.2020

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

pip install papermill
papermill notebook.ipynb output.ipynb

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

person pglez82    schedule 16.07.2020

Используя ipython:

ipython --TerminalIPythonApp.file_to_run=<notebook>.ipynb

Обычно я бы предпочел этот вариант, поскольку он действительно самоописуемый. Если вы предпочитаете использовать меньше символов, используйте:

ipython -c "%run <notebook>.ipynb"

это в основном то, что Keto уже предлагалось (к сожалению, немного скрыто) как комментарий.

person Murmel    schedule 09.03.2021
comment
Ребята, согласитесь, без этого ответа вы бы не нашли комментарий, так почему бы не проголосовать за оба? :) - person mirekphd; 09.06.2021
comment
Я также хотел бы добавить, что разумно указывать абсолютный путь к записной книжке (это может сэкономить вам много времени на поиск, если ipython не единственная часть цепочки выполнения (в моем случае ipython находился внутри запуска сценария bash из Kubernetes CronJob, и он потерпит неудачу без полного абсолютного пути к ноутбуку). - person mirekphd; 10.06.2021