ipython使用笔记

  1. ipython中可以使用edit命令编辑文件内容,edit打开文件的方式根据系统已安装编辑器决定,也可以通过执行ipython前使用
    1
    export EDITOR=vim

自己指定编辑器类型。

比如:

1
edit t.py

输入:

1
l = range(10)

  1. 通过run命令可以执行python脚本:
1
2
3
4
5
6
run t.py

--------------------

In [8]: l
Out[8]: range(0, 10)

可以看到,执行完t.py这个脚本后,l就可以被识别到了。

  1. 使用alias设置常用命令别名:
1
2
3
alias largest ls -1sSh | grep %s

%largest t

要存储别名,需要使用

1
store largest

  1. 使用bookmark存储书签,相当于linux下的软链接。
1
2
%bookmark root /home
cd root //相当于进入了home目录
  1. hist命令查看历史纪录,并使用save命令存储指定行的内容到文件中
1
save a.py 9-11     //存储9-11行到a.py这个文件中
  1. 使用debug函数进入调试器调试程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
In [18]: a = 1
In [19]: b = 0
In [20]: a / b
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-20-d8e10abd5ab6> in <module>()
----> 1 a / b
ZeroDivisionError: division by zero
In [21]: debug
> <ipython-input-20-d8e10abd5ab6>(1)<module>()
----> 1 a / b
ipdb> p a
1
ipdb> p b
0
ipdb> exit
  1. 使用%rehashx命令将linux下的命令都更新进ipython中方便实用:
1
2
3
4
5
6
7
8
9
10
11
In [23]: echo 1
File "<ipython-input-23-932d3634cbf0>", line 1
echo 1
^
SyntaxError: invalid syntax


In [24]: %rehashx

In [25]: echo 1
1
  1. 使用%store -r恢复之前保存的别名

  2. 使用load命令只加载程序内容,不执行,跟run有区别,run直接执行。

  3. 使用logstart可以将ipython中的内容记录为日志文件保存起来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
In [26]: logstart
Activating auto-logging. Current session state plus future input saved.
Filename : ipython_log.py
Mode : rotate
Output logging : False
Raw input log : False
Timestamping : False
State : active

In [27]: a = 1

In [28]: b =2

In [29]: c= 1

In [30]: %logoff
Switching logging OFF

之后推出ipython后再次启动ipython之前使用:

1
ipython -i ipython_log.py

就可以将之前记录的变量以及数据继续使用。

  1. 编辑ipython配置文件实现autoreload功能
1
2
3
4
5
6
7
8
默认是没有ipython_config.py这个配置文件的,需要使用 ipython profile create 这个命令创建一个默认配置文件
编辑.ipython/profile_default/ipython_config.py

32:c.InteractiveShellApp.exec_lines = ['autoreload 2']
35:c.InteractiveShellApp.extensions = ['autoreload']
600:c.StoreMagics.autorestore = True

分别改为上述内容

再次进入ipython:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
In [1]: edit test.py
Editing... done. Executing edited code...
-----------------------------------------
文件test.py的内容:
def run():
return 2
-----------------------------------------

In [2]: from test import run

In [3]: run()
Out[3]: 2

In [4]: edit test.py
Editing... done. Executing edited code...
-----------------------------------------
文件test.py的内容:
def run():
return 10
-----------------------------------------
In [5]: run()
Out[5]: 10

可以看到我们手动修改了test.py中的run函数返回的值后不需要再次import这个run函数就可以自动返回最新的值(10),这就是autoreload的作用。

2018.6.21 北京 晴 天微亮 失眠之夜写下这个笔记