ptpython- a better Python REPL
/ / / 阅读数:3612前言
今天发现一个项目: ptpython . 新一代的 REPL 神器。玩了一下。毅然的 ipython 换成了 ptipython - ptpython 自带的 iython 的接口。和大家介绍下
ptpython 的优点
先说几个在用 ipython 过程中遇到的问题吧.
- ipython 在 Mac 下缩进问题。每次在交互模式里面输入一个缩进的内容,比如下面
In [1]: def t(): ...: return 1 ...: In [2]: def t(): return 1 |
看到了吧,缩进不正确了. ptpython 没有这个问题,它的底层库 prompt_toolkit 实现了一个替代物
jedi. 我在 emacs 里面,jedi 是标配。其一是因为有 epc, 可以和 python 通信,它的自动补全和跳到函数 / 类定义真的很方便。但是 python 交互解释器 还没有一个用它的。这里真的感觉效果很好.
emacs/vim 键位。好吧我经常在用 ipython 的时候习惯
Ctrl+x Ctrl+c
退出。能用 emacs 的键位做编辑真的很爽- 提供一个终端的菜单,有多个选项可以选择
- 模式粘贴。大家知道 python 有个问题:你粘贴过来的代码不一定能运行 - 粘贴后的缩进会很奇怪的. ipython 虽然有
% paste
和% cpaste
. 但是有时候还是会有IndentationError
问题. ptpython 在这里独创了Paste mode
. 使用 F7 切换。还可以多行编辑. - 可以开启多个 Tab, 甚至多个 Tab 的内容一齐显示出来。类似 vim 的:split
- 能对你写的每行程序判断是否出现语法错误。如果你的代码有问题,下面左侧会有错误提示 - 这其实能延伸做很多检查嘛
- ipython 对查看对象的方法有一些问题,比如这个:
$ipython In [1]: '/tmp'.<tab> # 不会理你的 |
ptpython 对这样的处理都很好
- 一个很贴心的特性:
$ptpython In [1]: 'tmp<Tab> # 他会告诉你这是个目录, 还会自动完成列出目录下的文件. autocompletion |
- 最后一点吧。它非常容易的被嵌入你的程序,你的解释器
python Python 2.7.3 (default, Apr 10 2013, 06:20:15) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. Welcome to Lazy Python. Type "help LazyPython" for help. >>> from ptpython.repl import embed >>> embed(globals(), locals(), vi_mode=False, history_filename=None) In [1]: # 看就这么2句 |
ptipython
ptipython = ptpython + ipython
在安装了 ptipython 之后,就可以使用了。完全可以替代 ipython. 类似 bipython = bpython + ipython