REPL 环境 - IPython

优质
小牛编辑
135浏览
2023-12-01

IPython 是一个增强了交互能力的 Python REPL 环境,IPython v1-3 版本安装同时会安装
IPython notebook,相当于一个网页版的 REPL 环境。
相对于原生的 Python REPL,IPython 主要提供了 Tab 自动补全、shell 命令交互、
快速文档查询等功能。
除了在 shell 中使用外,Django shell 以及 PyCharm IDE 都提供了 IPython 的支持——
安装了 IPython 后会选择其作为默认 python shell。

启动 & 退出

启动 IPython:ipython

启动 IPython notebook:ipython notebook

启动 IPython Qt shell:ipython qtshell

退出:双击 Ctrl-D 或者 exit 或者 quit 或者 exit()

特性

Tab 补全

原生的 Python shell 可以通过 rlcompleterreadline 库获得 Tab 补全能力:

  1. import rlcompleter, readline
  2. readline.parse_and_bind('tab: complete')

IPython 的支持更强大一些。不过 IPython 的自动补全依旧是循环式的,需要菜单式的可以试试 ptpython。

魔法指令(Magic Command)

魔法指令是 IPython 定义的命令,以提供 IPython 环境下与环境交互的能力,通常对应于 shell 命令。
你可以在 IPython 控制台中输入 ls 或者 %ls 来查看当前目录文件。

魔法指令通常以 % 开始,对于非 % 开始的魔法指令,IPython 会首先判断它是不是
Python 对象,如是对象则优先作为 Python 对象处理。

更全面的 magic 命令列表和功能介绍见这里

魔法指令中还包括了很多 Shell 命令,但并不是全部,IPython 也支持直接执行 Shell
命令,只需要以感叹号 ! 起始,例如:!ls

Plot

常见用法是配合 mathplotlib 等 plot 库和 IPython 插件,在终端、Qt console 或者 Notebook
中展示图表。

内省

函数内省

IPython 提供了 ??? 命令用于内省,? 会显示函数简介,?? 会连源代码一起显示
(如果可用的话)。

输入历史

hist 魔法指令可以用来输出输入历史:

  1. In [7]: hist
  2. 1: a = 1
  3. 2: b = 2
  4. 3: c = 3
  5. 4: d = {}
  6. 5: e = []
  7. 6: for i in range(20):
  8. e.append(i)
  9. d[i] = b

要去掉历史记录中的序号,使用命令 hist -n

  1. In [8]: hist -n
  2. a = 1
  3. b = 2
  4. c = 3
  5. d = {}
  6. e = []
  7. for i in range(20):
  8. e.append(i)
  9. d[i] = b

这样你就可以方便的将代码复制到一个文本编辑器中。

要在历史记录中搜索可以先输入一个匹配模型,然后按 Ctrl-p ,找到一个匹配后,继续按
Ctrl-p 会向后搜索再上一个匹配,Ctrl-n 则是向前搜索最近的匹配。

编辑

当在 Python 提示符下试验一个想法时,经常需要通过编辑器修改源代码(甚至是反复修改)。
在 IPython 下输入魔法指令 edit 就会根据环境变量 $EDITOR 调用相应的编辑器。
如果 $EDITOR 为空,则会调用 vi(Unix)或记事本(Windows)。
要回到 IPython 提示符,直接退出编辑器即可。

如果是保存并退出编辑器,输入编辑器的代码会在当前名字空间下被自动执行。
如果你不想这样,使用 edit -x。如果要再次编辑上次最后编辑的代码,使用 edit -p
在上一个特性里,我提到使用 hist -n 可以很容易的将代码拷贝到编辑器。
一个更简单的方法是 edit 加 Python 列表的切片(slice)语法。假定 hist 输出如下:

  1. In [29]: hist -n
  2. a = 1
  3. b = 2
  4. c = 3
  5. d = {}
  6. e = []
  7. for i in range(20):
  8. e.append(i)
  9. d[i] = b

现在要将第 4、5、6 句代码导出到编辑器,只要输入:

  1. edit 4:7

交互调试

调试方面常用的魔术命令有 rupruntimetimeit 等等。更直接的方式是借助系统调试工具 pdb。

快捷键及配置

作为库使用

NotFinished,虽然ipython -p pysh提供了一个强大的shell替代品,但它缺少正确的job控制。在运行某个很耗时的任务时按下Ctrl-z将会停止IPython session而不是那个子进程。

问题和方法

虽然作为标准 Python Shell 的替代,IPython 总的来说很完美,但仍然存在一些问题。

粘贴代码缩进问题

默认情况下,IPython 会对粘贴的已排好缩进的代码重新缩进。例如下面的代码:

  1. for i in range(10):
  2. for j in range(10):
  3. for k in range(10):
  4. pass

会变成:

  1. for i in range(10):
  2. for j in range(10):
  3. for k in range(10):
  4. pass

这是因为 autoindent 默认是启用状态,可以用 magic 命令 autoindent 来开关自动缩进,
就像在 Vim 中设置 set paste 一样。

或者,你也可以使用魔法指令 %paste 粘贴并执行剪贴板中的代码。

Vim 模式

Mac 下的快捷启动

IPython wiki 提供了一段 AppleScript launcher 脚本,把它写入 ~/bin/ipy
在 Mac Spotlight 中输入 ipy 并回车就可以在新 iTerm 窗口中打开 IPython Shell。
下面是我稍微修改后的版本:

  1. #!/usr/bin/osascript
  2. -- Run ipython on a new iTerm
  3. -- See http://www.iterm2.com/#/section/documentation/scripting
  4. tell application "iTerm"
  5. activate
  6. set ipyterm to (make new terminal)
  7. tell ipyterm
  8. set ipysession to (make new session)
  9. tell ipysession
  10. set name to "IPython"
  11. exec command "${which ipython}"
  12. end tell
  13. end tell
  14. end tell

IPython notebook

启动

在终端输入: ipython notebook

IPython notebook 的使用和 Vim 有些类似,分“命令模式”和“编辑模式”,切换方法同样为 ESC 键。
在命令模式下按 h 可以呼出帮助菜单,貌似不区分大小写。

最后更新:

类似资料

  • 标准的 Python 发行版不会与 NumPy 模块捆绑在一起。 一个轻量级的替代方法是使用流行的 Python 包安装程序 pip 来安装 NumPy。 pip install numpy 启用 NumPy 的最佳方法是使用特定于您的操作系统的可安装的二进制包。 这些二进制包含完整的 SciPy 技术栈(包括 NumPy,SciPy,matplotlib,IPython,SymPy 以及 Pyt

  • 环境 shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 OS 当前主流的操作系统都支持shell编程,本文档所述的shell编程是指Linux下的shell,讲的基本都是POSIX标准下的功能,所以,也适用于Unix及BSD(如Mac OS)。 Linux Linux默认安装就带了shell解释器。 Mac OS Mac OS不仅带了

  • 你的应用程序可能需要大量的软件包才能正常的工作。如果都不需要 Flask 包的话,你有可能读错了教程。当应用程序运行的时候,你的应用程序的 环境 基本上是所有一切事情的根基。我们是幸运的,因为有许多方式使得我们能够轻松地管理我们的环境。 使用 virtualenv 管理你的环境 virtualenv 是用于在所谓 虚拟环境 中隔离你的应用程序的一个工具。一个虚拟环境是包含了你的应用依赖的软件的一个

  • 在我们开始编写Perl程序之前,让我们了解如何设置Perl环境。 Perl可在各种平台上使用 - Unix(Solaris,Linux,FreeBSD,AIX,HP/UX,SunOS,IRIX等) 赢9x/NT/2000/ WinCE Macintosh(PPC,68K) Solaris(x86,SPARC) OpenVMS Alpha(7.2及更高版本) Symbian Debian GNU/k

  • 要开始使用Koa框架进行开发,您需要安装Node和npm(节点包管理器)。 如果您还没有这些,请转到Node setup以在本地系统上安装节点。 通过在终端中运行以下命令,确认已安装节点和npm。 $ node --version $ npm --version 您应该收到类似于 - 的输出 v5.0.0 3.5.2 请确保您的节点版本高于6.5.0。 现在我们已经设置了Node和npm,让我

  • 在开始使用Rexx之前,您需要确保在系统上运行Rexx的全功能版本。 本章将介绍在Windows机器上安装Rexx及其后续配置以开始使用Rexx。 在继续安装之前,请确保满足以下系统要求。 系统需求 (System Requirements) Memory 2 GB RAM(推荐) 磁盘空间 没有最低要求。 优选地,具有足够的存储空间来存储将使用Rexx创建的程序。 操作系统版本 Rexx可以安装