Блокнот jupyter - проверьте, доступна ли магия

Я пытаюсь вызвать команду Python из Javascript, используя ipykernel.comm. Проблема в том, что я хочу использовать один и тот же код независимо от того, запускаю ли я ядро ​​python3 или ядро ​​pyspark3. Для последнего мне нужно запустить код с %% local cell magic, который не работает для чистого ядра python 3.

Как программно проверить, доступна ли данная (внешняя) магия?

Я пытался заглянуть в get_ipython().magics_manager.registry но я чувствую, что это не так. Я попытался посмотреть на интерфейс (javascript), но также не смог его найти.

Я думал, может быть, источник для sparkmagic поможет мне, но не повезло. Я не знаю как получить доступ IPython.CodeCell.config_defaults

ядро sparkmagic.js

2 ответа

Решение

Вы можете получить доступную магию через:

from IPython import get_ipython

line_magics = list(get_ipython().magics_manager.magics.get('line'))
cell_magics = list(get_ipython().magics_manager.magics.get('cell'))

Вместо того, чтобы проверять, доступна ли команда, вы просто используете ее и ловите исключение, если оно не поддерживается.

Пример:

from IPython.core.error import UsageError
try:
    %%local
except UsageError:
    print("Magic %%local not support in this kernel")
Другие вопросы по тегам