IPython魔法是如何工作的

时间:2015-03-25 08:55:05

标签: ipython ipython-notebook ipython-magic

ipthon-sql是ipython的扩展,我首先通过pip install ipython-sql安装它

项目在这里:https://github.com/catherinedevlin/ipython-sql

我的问题是:

当我输入%load_ext sql并按SHIFT + ENTER时,IPython执行这个魔术句的详细程序是什么?谢谢...

enter image description here

1 个答案:

答案 0 :(得分:6)

当您在笔记本中运行任何代码时,execute_request将通过笔记本服务器发送到“内核”,这是一个执行代码的过程。

当内核收到你的代码时,它会通过一系列输入变换器运行它。其中一个检测到此行是魔术命令,并将其重写为:

get_ipython().magic('load_ext sql')

您可以使用%hist -t查看这些已翻译的命令。

.magic()方法接受其参数load_ext的第一个单词,并在字典中查找。您可以通过运行

来查看该字典
get_ipython().magics_manager.magics['line']

(这可能会有所不同,具体取决于您的IPython版本)

它为方法IPython.core.magics.extension.ExtensionMagics.load_ext提供了参考,您可以看到here。它用字符串的其余部分调用该方法。

该方法导入包sql,并调用sql.load_ipython_extension(ip)进行设置。它取决于它所做的扩展 - 在这种情况下,它注册了一些新的魔术函数。