- PVSM.RU - https://www.pvsm.ru -
05 мая 2025 года Duncan Britt публиковал статью о том, как можно работать с Jupyter ноутбуками в Emacs. Он создал пакет Jupyter-Ascending [1] , чтобы упростить редактирование и выполнение Python кода в Jupyter-ноутбуках напрямую из Emacs.
Оригинал статьи можно найти на сайте автора:
https://duncanbritt.com/blog/jupyter-ascending/jupyter-ascending.html [2]
Главным образом, jupyter-ascending использует Jupytext [3] и Jupyter Ascending [4].
Инструменты пакета предоставляют следующие возможности:
отображение .ipynb-файлов как обычного Python-кода,
синхронизация содержимого двух файлов,
выполнение кода в Jupyter-ноутбуке.
Синхронизация: любые изменения и сохранения в Python-файле мгновенно отражаются в соответствующем Jupyter-ноутбуке.
Выполнение ячеек: запуск отдельных ячеек или всего ноутбука.
Навигация: переход между ячейками с помощью простых команд.
Управление ячейками: создание новых ячеек, переключение между кодом и Markdown.
Поддержка Markdown:
редактирование в отдельных буферах (аналогично специальному режиму Org mode),
автоматическая вставка комментариев при нажатии Enter в Markdown-ячейках.
Утилиты настройки: команды для запуска Jupyter и создания синхронизированных пар файлов.
Перед установкой пакета убедитесь, что установлены все необходимые зависимости.
Если 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
Jupyter Ascending доступен через MELPA [1]
Чтобы установить этот пакет в Emacs, выполните следующие шаги:
Добавьте следующие строки в файл конфигурации~/.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))
В файл конфигурации emacs (~/.emacsили~/.emacs.d/init.el`) добавьте:
(unless (package-installed-p 'jupyter-ascending)
(package-install 'jupyter-ascending))
В качестве альтернативы Вы также можете установить пакет вручную через M-x:
Нажмите M-x (Alt + x)
Введите: package-install
Emacs спросит название пакета — введите jupyter-ascending, и нажмите Enter
После установки вы можете проверить, работает ли пакет, например, выполнив:
(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)))
Создать пару синхронизированных файлов:
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 в браузере.
|
Команда |
Описание |
|---|---|
|
|
Выполнить текущую ячейку |
|
|
Выполнить все ячейки |
|
|
Перейти к следующей ячейке или создать новую |
|
|
Вернуться к предыдущей ячейке |
|
|
Редактировать Markdown-ячейку в отдельном буфере |
|
|
Переключить тип ячейки (Код / Markdown) |
Пакет работает только с Python-ноутбуками, поскольку Jupyter Ascending поддерживает исключительно Python. Подробнее:
https://github.com/imbue-ai/jupyter_ascending/issues/25 [5]
Хороший обзор других решений для работы с Jupyter из Emacs можно найти в блоге 2023 года [6]. В нём рассматриваются emacs-jupyter и ein.
Этот пакет был создан, потому что в Data Science широко используют Jupyter-ноутбуки. Конечно, Org-mode был бы еще лучше, но увы. Jupyter-ascending позволяет работать с ноутбуками как с обычными Python-файлами, не запуская Jupyter. Конечно, есть и другие Emacs-пакеты для Jupyter, которые не ограничиваются только Python, но Jupyter Ascending показался отличной альтернативой.
Автор: YuriySamorodov
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/perevod/420179
Ссылки в тексте:
[1] Jupyter-Ascending: https://melpa.org/#/jupyter-ascending
[2] https://duncanbritt.com/blog/jupyter-ascending/jupyter-ascending.html: https://duncanbritt.com/blog/jupyter-ascending/jupyter-ascending.html
[3] Jupytext: https://jupytext.readthedocs.io/en/latest/
[4] Jupyter Ascending: https://github.com/imbue-ai/jupyter_ascending
[5] https://github.com/imbue-ai/jupyter_ascending/issues/25: https://github.com/imbue-ai/jupyter_ascending/issues/25
[6] блоге 2023 года: https://martibosch.github.io/jupyter-emacs-universe/
[7] Источник: https://habr.com/ru/articles/910812/?utm_source=habrahabr&utm_medium=rss&utm_campaign=910812
Нажмите здесь для печати.