jupyter笔记本 - 检查魔法是否可用

时间:2018-01-22 14:57:46

标签: python jupyter

我试图使用ipykernel.comm在javascript中调用python命令。问题是我想使用相同的代码,无论我运行python3内核还是pyspark3内核。对于后者,我需要运行带有 %% local 单元魔术的代码,这对于纯python 3内核不起作用。

如何以编程方式检查给定(前端)魔法是否可用?

我试着调查get_ipython().magics_manager.registry,但我觉得这不是那样的。我试着看一下前端(javascript),但我也找不到它。

我想也许sparkmagic的来源会帮助我,但没有运气。我不知道如何访问IPython.CodeCell.config_defaults

sparkmagic的kernel.js

2 个答案:

答案 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'))