IPython 魔法是如何运作的

how does IPython magics work

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

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

我的问题是:

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

当您 运行 notebook 中的任何代码时,execute_request 会通过 notebook 服务器发送到 'kernel',一个执行您的代码的进程。

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

get_ipython().magic('load_ext sql')

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

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

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

(这可能会因您的 IPython 版本而略有不同)

这给了它对方法 IPython.core.magics.extension.ExtensionMagics.load_ext 的引用,您可以看到 here。它使用字符串的其余部分调用该方法。

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