Jupyter-Ascending — новый способ работы с Jupyter Ноутбуками в Emacs

от автора

05 мая 2025 года Duncan Britt публиковал статью о том, как можно работать с Jupyter ноутбуками в Emacs. Он создал пакет Jupyter-Ascending , чтобы упростить редактирование и выполнение Python кода в Jupyter-ноутбуках напрямую из Emacs.
Оригинал статьи можно найти на сайте автора:
https://duncanbritt.com/blog/jupyter-ascending/jupyter-ascending.html

Главным образом, jupyter-ascending использует Jupytext и Jupyter Ascending.
Инструменты пакета предоставляют следующие возможности:

  • отображение .ipynb-файлов как обычного Python-кода,

  • синхронизация содержимого двух файлов,

  • выполнение кода в Jupyter-ноутбуке.

Как это выглядит на практике

Использование с Python

Использование с Python
Работа с Markdown

Работа с Markdown
Запуск сессии

Запуск сессии

Основные возможности

  • Синхронизация: любые изменения и сохранения в Python-файле мгновенно отражаются в соответствующем Jupyter-ноутбуке.

  • Выполнение ячеек: запуск отдельных ячеек или всего ноутбука.

  • Навигация: переход между ячейками с помощью простых команд.

  • Управление ячейками: создание новых ячеек, переключение между кодом и Markdown.

  • Поддержка Markdown:

    • редактирование в отдельных буферах (аналогично специальному режиму Org mode),

    • автоматическая вставка комментариев при нажатии Enter в Markdown-ячейках.

  • Утилиты настройки: команды для запуска Jupyter и создания синхронизированных пар файлов.

Установка

1. Зависимости

Перед установкой пакета убедитесь, что установлены все необходимые зависимости.

Если Jupyter ещё не установлен:

pip install notebook 

Затем установите Jupyter Ascending:

pip install jupyter_ascending && python3 -m jupyter nbextension install jupyter_ascending --sys-prefix --py && \ python3 -m jupyter nbextension enable jupyter_ascending --sys-prefix --py && \ python3 -m jupyter serverextension enable jupyter_ascending --sys-prefix --py 

Обычно установка Jupyter Ascending автоматически устанавливает jupytext, но если этого не произошло:

pip install jupytext 

Переходим к установке в Emacs

Jupyter Ascending доступен через MELPA

Чтобы установить этот пакет в Emacs, выполните следующие шаги:

1. Подключите репозиторий MELPA

Добавьте следующие строки в файл конфигурации~/.emacs или ~/.emacs.d/init.el:

(require 'package)  ;; Добавление репозиториев (setq package-archives       '(("melpa" . "https://melpa.org/packages/")         ("gnu"   . "https://elpa.gnu.org/packages/")))  (package-initialize)  ;; Обновляем список пакетов при необходимости (unless package-archive-contents   (package-refresh-contents)) 

2. Установить jupyter-ascending

В файл конфигурации emacs (~/.emacsили~/.emacs.d/init.el`) добавьте:

(unless (package-installed-p 'jupyter-ascending)   (package-install 'jupyter-ascending)) 

В качестве альтернативы Вы также можете установить пакет вручную через M-x:

  1. Нажмите M-x (Alt + x)

  2. Введите: package-install

  3. Emacs спросит название пакета — введите jupyter-ascending, и нажмите Enter

3. Проверка установки

После установки вы можете проверить, работает ли пакет, например, выполнив:

(require 'jupyter-ascending) 

Конфигурация

Пример настройки с использованием use-package, где:

  • назначаются горячие клавиши для часто используемых команд,

  • режим активируется для файлов с суффиксом .sync.py.

(use-package jupyter-ascending   :ensure t   :hook (python-mode . (lambda ()                          (when (and buffer-file-name                                     (string-match-p "\\.sync\\.py\\'" buffer-file-name))                            (jupyter-ascending-mode 1))))   :bind (:map jupyter-ascending-mode-map               ("C-c C-k" . jupyter-ascending-execute-line)               ("C-c C-a" . jupyter-ascending-execute-all)               ("C-c C-n" . jupyter-ascending-next-cell)               ("C-c C-p" . jupyter-ascending-previous-cell)               ("C-c t"   . jupyter-ascending-cycle-cell-type)               ("C-c '"   . jupyter-ascending-edit-markdown-cell))) 

Как работать с пакетом Jupyter Ascending

Создать пару синхронизированных файлов:

M-x jupyter-ascending-create-notebook-pair RET example RET 

или в терминале:

python3 -m jupyter_ascending.scripts.make_pair --base example 

Это создаст два файла: example.sync.py и example.sync.ipynb.

Если у вас уже есть Jupyter-ноутбук, создайте из него Python-файл:

M-x jupyter-ascending-convert-notebook RET example.ipynb RET 

или в терминале:

jupytext --to py:percent example.ipynb 

Затем добавьте суффикс .sync к обоим файлам.

Чтобы запустить Jupyter и открыть ноутбук:

  • Откройте example.sync.py в Emacs

  • Выполните:

M-x jupyter-ascending-start-notebook 

или в терминале:

python3 -m jupyter notebook example.sync.ipynb 

Внутри Python-файла каждая ячейка начинается с # %%.

# %% [markdown] # Это ячейка Markdown. # Ниже — ячейка с кодом.  # %% def g(x):     return 3 * x 

При редактировании и сохранении .py-файла вы сразу увидите изменения в Jupyter в браузере.

Рекомендуемые горячие клавиши:

Команда

Описание

jupyter-ascending-execute-line

Выполнить текущую ячейку

jupyter-ascending-execute-all

Выполнить все ячейки

jupyter-ascending-next-cell

Перейти к следующей ячейке или создать новую

jupyter-ascending-previous-cell

Вернуться к предыдущей ячейке

jupyter-ascending-edit-markdown-cell

Редактировать Markdown-ячейку в отдельном буфере

jupyter-ascending-cycle-cell-type

Переключить тип ячейки (Код / Markdown)

Ограничения

Пакет работает только с Python-ноутбуками, поскольку Jupyter Ascending поддерживает исключительно Python. Подробнее:
https://github.com/imbue-ai/jupyter_ascending/issues/25

Альтернативы

Хороший обзор других решений для работы с Jupyter из Emacs можно найти в блоге 2023 года. В нём рассматриваются emacs-jupyter и ein.

Заключение

Этот пакет был создан, потому что в Data Science широко используют Jupyter-ноутбуки. Конечно, Org-mode был бы еще лучше, но увы. Jupyter-ascending позволяет работать с ноутбуками как с обычными Python-файлами, не запуская Jupyter. Конечно, есть и другие Emacs-пакеты для Jupyter, которые не ограничиваются только Python, но Jupyter Ascending показался отличной альтернативой.


ссылка на оригинал статьи https://habr.com/ru/articles/910812/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *