Командная строка: преобразование IPython Notebook в Python
Быстрый ответ
Для трансформации IPython Notebook в Python-файл воспользуйтесь следующей командой:
jupyter nbconvert --to python <YourNotebook>.ipynb
В результате выполнения этой команды будет сгенерирован файл <YourNotebook>.py
, содержащий исполняемый код из вашего ноутбука.
Дополнительные возможности
Пакетное преобразование
Если нужно преобразовать несколько файлов одновременно, используйте маску *.ipynb
:
jupyter nbconvert --to script *.ipynb
Такая команда трансформирует все ноутбуки содержащиеся в текущей директории в Python-скрипты.
Выполнение команды внутри ноутбука
Вы можете запустить конвертацию непосредственно из IPython Notebook:
!jupyter nbconvert --to script <YourNotebook>.ipynb
Благодаря этому не придется тратить время на переключение между различными интерфейсами.
Упрощение команд
Чтобы упростить процесс конвертации, можно создать отдельный скрипт:
echo '#!/bin/bash' > convert_notebooks.sh
echo 'jupyter nbconvert --to script "$@"' >> convert_notebooks.sh
chmod +x convert_notebooks.sh
./convert_notebooks.sh <YourNotebook>.ipynb
Для удобства конвертации файлов используйте convert_notebooks.sh
.
Двусторонняя конвертация с Jupytext
Jupytext позволяет выполнить конвертацию файлов между форматами .ipynb
и .py
:
jupytext --to py notebook.ipynb
После выполнения этой команды будет создан Python-файл, основанный на вашем ноутбуке.
Подробности
Разбор командной строки
Опция --to script
выполняет конвертацию. Это более современный вариант команды, чем --to python
.
Предварительное использование
Вы можете применять API nbconvert
непосредственно в коде Python:
from nbconvert import PythonExporter
import nbformat
notebook_filename = '<YourNotebook>.ipynb'
with open(notebook_filename) as fh:
nb = nbformat.reads(fh.read(), as_version=4)
exporter = PythonExporter()
source, meta = exporter.from_notebook_node(nb)
with open('<YourScript>.py', 'w+') as fh:
fh.writelines(source)
Этот код трансформирует ваш ноутбук в скрипт.
Выполнение скрипта с Jupytext
С Jupytext вы можете из Python-скрипта воссоздать Jupyter Notebook и запустить его:
jupytext --to notebook --execute <YourNotebook>.py
Таким образом, ваш код станет интерактивным.
Визуализация
Процесс преобразования визуально можно представить следующим образом:
📗IPython Notebook: [🔬 Анализ данных, 💻 Программирование, 📑 Документация, 💭 Обмен идеями]
Преобразование:
📗 -> jupyter nbconvert --to script <YourNotebook>.ipynb
Результат:
🗒️Python-файл: [📝 Анализ данных, 📝 Программирование, 📝 Документация, 📝 Обмен идеями]
Это позволяет перевести интерактивный документ в исполняемый код.
Продвинутое использование
Вопросы совместимости
Необходимо учитывать совместимость различных версий nbformat
.
Автоматизация без графического интерфейса
Скрипты упрощают задачу автоматизации на серверах или в Docker-контейнерах, где не доступен графический интерфейс.
Планирование задач
Скрипты можно использовать для запуска задач через Cron и другие системы автоматизации.
Полное преобразование
Для избежания ошибок при ручном использовании, применяйте специализированные инструменты вместо парсинга JSON.
Полезные материалы
- Использование как инструмента командной строки — документация nbconvert 7.16.0 — подробное руководство по конвертации Jupyter-ноутбуков с помощью nbconvert.
- python – Как запустить .ipynb Jupyter Notebook из терминала? – Stack Overflow — обсуждение вопросов запуска и трансформации ноутбуков через командную строку на форуме Stack Overflow.
- GitHub – jupyter/nbconvert: Конвертация Jupyter Notebook — официальный репозиторий nbconvert на GitHub с примерами и документацией.
- Встроенные магические команды — документация IPython 8.21.0 — более детальная информация о магических командах IPython, включая
%save
для экспорта кода из ноутбуков. - Проекты — документация Jupyter 4.1.1 alpha — обзор проектов и инструментов Jupyter, полезных для конвертации ноутбуков.