Запуск записной книжки IPython/Jupyter не в интерактивном режиме
Кто-нибудь знает, можно ли запустить IPython/Jupyter ноутбук неинтерактивно из командной строки и получить полученный файл .ipynb
, сохраненный с результатами запуска. Если это еще не возможно, как трудно было бы реализовать с помощью phantomJS, что-то включить или выключить ядро и что-то включить и выключить веб-сервер?
Чтобы быть более конкретным, допустим, что у меня уже есть ноутбук original.ipynb
, и я хочу повторно запустить все ячейки в этом ноутбуке и сохранить результаты в новом ноутбуке new.ipynb
, но сделать это с помощью одной команды в команде line, не требуя взаимодействия ни в браузере, ни для закрытия ядра или веб-сервера, и если не предполагается, что ядро или веб-сервер уже запущены.
пример команды:
$ ipython notebook run original.ipynb --output=new.ipynb
Ответы
Ответ 1
Да, это возможно и просто, в основном это будет ядро IPython для 2.0, я бы посоветовал посмотреть эти примеры сейчас.
[Править]
$ jupyter nbconvert --to notebook --execute original.ipynb --output=new.ipynb
Это сейчас в Jupyter NbConvert. NbConvert поставляется с набором Preprocessor
, которые по умолчанию отключены, два из них (ClearOutputPreprocessor
и ExecutePreprocessor
) представляют интерес. Вы можете включить их в своем (локальном | глобальном) конфигурационном файле (ах) через c.<PreprocessorName>.enabled=True
(верхний регистр этого питона) или в командной строке с --ExecutePreprocessor.enabled=True
сохранить оставшуюся часть команды как обычно.
--ExecutePreprocessor.enabled=True
имеет удобный псевдоним --execute
, который можно использовать в последней версии NbConvert. При желании его можно комбинировать с --inplace
Например, преобразовать в html после запуска ноутбука без заголовка:
$ jupyter nbconvert --to=html --execute RunMe.ipynb
преобразование в PDF после удаления результатов
$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb
Это (конечно) работает с ядрами не-Python, порождая ядро <insert-your-language-here>
, если вы установили --profile=<your fav profile>
. Преобразование может быть очень долгим, так как необходимо перезапустить ноутбук. Вы можете выполнить преобразование ноутбука в ноутбук с помощью опции --to=notebook
.
Существуют различные другие параметры (тайм-аут, разрешить ошибки,...), которые могут потребоваться установить/отключить в зависимости от варианта использования. См. документацию и, конечно, jupyter nbconvert --help
, --help-all
или nbconvert онлайн-документации для получения дополнительной информации.
Ответ 2
Пока эта функциональность не станет частью ядра, я собрал небольшое приложение командной строки, которое делает именно то, что вы хотите. Он называется runipy, и вы можете установить его с помощью pip install runipy
. источник и readme находятся в github.
Ответ 3
Чтобы охватить некоторые функции, такие как параллельные рабочие или входные параметры, вы можете установить jupyter-runner
pip install jupyter-runner
Readme on github: https://github.com/omar-masmoudi/jupyter-runner
Ответ 4
Запустите и замените оригинальный файл .ipunb:
jupyter nbconvert --ExecutePreprocessor.timeout=-1 --to notebook --inplace --execute original.ipynb
Ответ 5
Вы можете просто запустить iPython-Notebook-сервер через командную строку:
ipython notebook --pylab inline
Это запустит сервер в неинтерактивном режиме, и весь вывод будет напечатан под кодом. Затем вы можете сохранить файл .ipynb, который содержит код и вывод.