分享

一起用python之准备篇——ipython

 dzh1121 2015-03-13

update

发现ipython notebook 灰常方便,主要是写一些代码片段的时候,debug起来甚至跟pycharm有的一拼。配置好服务器版本后,打开浏览器就能用,一定程度上提升了效率。具体如何配置ipython notebook的service可以看官网,值得注意的一点是,如果不配置直接本地运行的化,只能通过localhost:[port]打开,无法远程访问。

写在前面

从本文开始,以后都用markdown写作,向大家学习~(另,本文是一个多月前写的,当时只对终端的命令截图了的,没有保存文本,现在也懒得在重新敲了,第一个还是文本,其余的都是图片。以后代码部分都采用该主题)

ipython现在几乎是自己使用python过程中最常用的工具。其中的一些特性很是好用,所以在这里专门用一篇来简单介绍下。方便后面的学习和调试过程。照例,这里给出一本值得推荐的参考书。Learning IPython for Interactive Computing and Data Visualization

安装

本来安装是没什么好说的,sudo apt-get install ipython就完了,但是,很多时候我们要在不同的python版本间切换。比如自己习惯在python3版本下工作,但是很多时候学习一些书中的例子 时使用的是python2的版本。因此这里建议同时安装ipython和ipython3两个版本。从我自己使用的情况来看,同时安装两个版本的 ipython并没有冲突,两个版本间的安装包是相互独立的,只是两个版本的ipython会共享配置文件。需要使用python2的环境时就在终端执行 ipython,需要使用python3版本的时候就在终端执行ipython3。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
tianjun@tianjun-ASUS:~/.config/ipython$ ipython
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
Type "copyright", "credits" or "license" for more information.
IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
 In [1]: exit
tianjun@tianjun-ASUS:~/.config/ipython$ ipython3
Python 3.3.2+ (default, Oct  9 2013, 14:50:09) 
Type "copyright", "credits" or "license" for more information.
 IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

那么怎么安装不同版本的ipython呢?

谈到不同版本python的共存,一个不可避免的问题就是给不同的python版本安装对应的软件包。一个比较好的解决办法是先安装 virtualenv这个工具,然后生成一个独立的工作目录,在该目录下安装不同版本的工具包。但是我嫌这个每次都要切换到工作目录下,还要执行 activate,比较麻烦。所以建议分别安装pip和pip3工具。

sudo apt-get install pip pip3

然后想安装python2版本的软件包就用命令

sudo pip install ipython

想安装python3版本对应的软件包就用命令

sudo pip3 install ipython3

类似的,我们可以安装好不同python版本对应的numpy,scipy,matplotlib,sklearn等等。

常用功能

1. 自动补全

ipython最方便的第一个功能是tab自动补全。我常用来查看某个类的方法,或者是某个包中提供的函数。这个很是有用,有时候忘了某个函数是怎么写的时候,用自动补全查看下。例如:

img2

2. 查看帮助文档和源码

比如,我想查看os.walk这个函数怎么用,可以在后面加上一个问号(os.walk?)再按enter。如果想查看更详细的源码实现,则加上两个问号,即(os.walk??),这个功能经常用到,很是方便,有时候不知道某个参数代表什么意思的时候,就可以查看下帮助文档。

3. 把ipython当作终端用

ipython中可以使用命令行中的许多命令,我常常用来切换目录,编辑或是删除文件。

img3

另外,还可以执行外部unix命令,不过需要在前面加入感叹号!,比如,需要编辑文件的时候,我就经常使用 !vim abc.py来运行vim程序。当然,也可以直接使用edit abc.py来编辑文件,该命令会自动启动vim,但我发现如果使用edit命令的话,编辑完保存文件并退出的时候ipython会自动运行该文件,这个h好处是可以接着在终端调用刚刚打开的文件中的变量和函数,不过这有时候会很烦人,所以我经常使用!vim abc.py来编辑文件。

ipython有许多个性化的设置,可以在命令行中输入 ipython profile create,这会在 ~/.config/ipython目录下生成配置文件,查看README有详细说明。

4. 书签

有些工作目录可能经常使用,每次都cd很麻烦。所以,我们可以在第一次切换到该目录下后,使用bookmark 命令,以后直接一次cd即可,具体使用方法如下。

img4

5. 记录

有时候我们希望将ipython中运行的命令保存到文件中,这时候可以使用 logstartlogoff命令实现。

img5

6. 调试和运行

run abc.py即可运行脚本,如果需要调试的时候,加入-d参数,即 run -d abc.py即可。需要注意的是,运行脚本后,变量即保存在此时的ipython运行环境中了,我们可以对脚本中的变量做进一步的分析和修改。关于调试, 最常使用的就是 s(step), n(next), c(continue),p(print)这4个命令。

  • l(list)命令用于显示上下文环境。例如:l 20 (显示当前行上下共20行代码) l 1, 30 (显示从1到第30行代码)
  • break 用于设置断点。例如: break 10 (在第10行设置断点),break (查看断点信息),
  • condition 1 pression 给断点1设定条件pression, 这里pression是python表达式,当条件满足时在该点停下来
  • disable 1,(禁用断点1), enable 1, (恢复断点1), clear 1,(删除断点1), ignore 1 3,(在执行到断点1第四次时才启用该断点),
  • commands 1,(给断点1设定触发动作,每次运行到该断点时,执行设定的python表达式,比如用于观察某一变量的变化情况。输入end结束commands)

更高级的运用可以查看pdb的帮助文档。

7. 其他

其他比较有用的是pylab,在绘图时能够交互,从而使得修改绘图命令时,修改后的结果能够立即在图像上显示出来。

ipython notebook 感觉很鸡肋,平时很少用到。

性能测试,timeitrun -trun -p等等,这些自己也很少用,更多高级应用可以参考本文开始给出的参考文献。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多