Блокнот 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")