.
Не редко (особенно в аналитических целях) разработка ведется в Jupyter Notebooks и несколько
больно переносить наработки в py-модули, в хотелось бы запустить что-то:
./my-notebook.ipynb или
run my-notebook.ipyb. Например, в Databricks так и сделали, notebook является единицей job\task и исполняется под капотом..
Может и нам так можно🧐
.
Возможностей не так много, но они есть:
- сохранить jupyter как скрипт
.py . При таком сохранении часть кода специфичная для notebooks может быть не выполнена, напримерdisplay или отдельно стоящий вывод: df.tail()- библиотека papermill - вот оно наше сокровище, позволяет запускть jupyter notebooks, а также их параметризовать, ну все как мы любим
.
Для создания параметризированного notebook необходимо:
- указать ячейку с параметрами, например, в ячейке может быть код:
# external params
period = "day"
output_file = "tmp.txt"
- указать, что ячейка = ячейка с параметрами: необходимо добавить cell tag = parameters к той ячейке, где располагаются переменные-параметры. papermill парсит их и устанавливает переданные вами значения. Где это находится смотри на скрине в комментариях или в репо.
- описать обработку параметров в коде (необязательно =))
- запустить jupyter notebook
papermill extract.ipynb -p period "week" -p output_file "weather-forecast.json" executed.ipynb --log-output --log-level INFO
.
Все артефакты найдете в репо
#papermill #jupyter #runasscript