我试图使用ipykernel.comm在javascript中调用python命令。问题是我想使用相同的代码,无论我运行python3内核还是pyspark3内核。对于后者,我需要运行带有 %% local 单元魔术的代码,这对于纯python 3内核不起作用。
如何以编程方式检查给定(前端)魔法是否可用?
我试着调查get_ipython().magics_manager.registry
,但我觉得这不是那样的。我试着看一下前端(javascript),但我也找不到它。
我想也许sparkmagic的来源会帮助我,但没有运气。我不知道如何访问IPython.CodeCell.config_defaults
sparkmagic的kernel.js
答案 0 :(得分:2)
不是检查命令是否可用,而是使用它,如果不支持则捕获异常。
示例:
from IPython.core.error import UsageError
try:
%%local
except UsageError:
print("Magic %%local not support in this kernel")
答案 1 :(得分:1)
您可以通过以下方式获取可用的魔法:
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'))