重要
本文档涵盖 IPython 6.0 及更高版本。从 6.0 版本开始,IPython 不再支持与低于 Python 3.3 的 Python 版本(包括所有版本的 Python 2.7)的兼容性。
如果您正在寻找与 Python 2.7 兼容的 IPython 版本,请使用 IPython 5.x LTS 版本并参阅其文档(LTS 是长期支持版本)。
IPython 扩展¶
比配置高一级的 IPython 扩展是 Python 模块,它们修改 shell 的行为。它们通过可导入的模块名称引用,并且可以放置在您通常导入的任何位置。
获取扩展¶
一些重要的扩展是 随 IPython 捆绑 的。可以在 wiki 上的 扩展索引 和 PyPI 上的 框架 :: IPython 标记 中找到其他扩展。
PyPI 上的扩展可以使用 pip
安装,就像任何其他 Python 包一样。
使用扩展¶
要在 IPython 运行时加载扩展,请使用 %load_ext
魔术
In [1]: %load_ext myextension
要在每次 IPython 启动时加载扩展,请在配置文件中列出它
c.InteractiveShellApp.extensions = [
'myextension'
]
编写扩展¶
IPython 扩展是一个可导入的 Python 模块,它有一些特殊函数来加载和卸载它。这是一个模板
# myextension.py
def load_ipython_extension(ipython):
# The `ipython` argument is the currently active `InteractiveShell`
# instance, which can be used in any way. This allows you to register
# new magics or aliases, for example.
def unload_ipython_extension(ipython):
# If you want your extension to be unloadable, put that logic here.
此 load_ipython_extension()
函数在导入扩展后调用,并且当前处于活动状态的 InteractiveShell
实例作为唯一参数传递。在这一点上,您可以对 IPython 做任何您想做的事情。
如果用户使用 %load_extension
,则不会再次调用 load_ipython_extension()
。用户必须明确要求重新加载扩展(使用 %reload_extension
)。在用户要求重新加载扩展的情况下,将卸载扩展(使用 unload_ipython_extension
),然后重新加载它。
有用的 InteractiveShell
方法包括 register_magic_function()
、push()
(向用户命名空间添加变量)和 drop_by_id()
(在卸载时删除变量)。
另请参阅
只要扩展模块可以通过 Python 的标准导入机制导入,就可以将它们放在任何想要的位置。
当扩展模块准备好供一般使用时,请将其添加到 扩展索引 中。我们还鼓励你将其上传到 PyPI 并使用 Framework :: IPython
分类器,以便用户可以使用标准打包工具安装它。
与 IPython 捆绑的扩展¶
octavemagic
曾经是捆绑的,但现在是 oct2py 的一部分。使用%load_ext oct2py.ipython
加载它。rmagic
现在是 rpy2 的一部分。使用%load_ext rpy2.ipython
加载它,并参阅rpy2.ipython.rmagic
了解如何使用它的详细信息。cythonmagic
曾经是捆绑的,但现在是 cython 的一部分。使用%load_ext Cython
加载它。sympyprinting
曾经是一个捆绑的扩展,但现在你应该改用sympy.init_printing()
。