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)
进行设置。这取决于扩展然后它做了什么——在这种情况下,它注册了一些新的魔法函数。
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)
进行设置。这取决于扩展然后它做了什么——在这种情况下,它注册了一些新的魔法函数。