背景

以前写脚本的时候会发现某一行脚本运行不了了,会去修改这一行,但是要想知道是否修改是否生效,则需要把脚本从头开始运行,直到我们修改的那一行。每次都是这样的轮回很费时间,更无奈的是耐心被渐渐的消磨。

昨天不知道怎么了,突然想打开 IPython notebook 玩玩。结果一发不可收拾,把一个项目的新手流程脚本用 IPython 重头到尾一天就写好了。实在是太适合写测试脚本了。

ipython notebook 的安装和使用入门

pip install jupyter ipython
jupyter notebook # 执行后会自动打开浏览器

关于 jupyter

依次选择 New -> Python2, 创建一个 Python2 的 Notebook,随便写点代码

这里面,每一个代码块都可以单独运行。而不用从文件的第一行开始,效率大大的提升。

比如我想修改print_stars函数,将*换成真正的星星,修改完之后,只要重新运行下面两个代码块就可以

jupyter 保存的文件的扩展名是 .ipynb, 实际上这是一个 json 文件。

命令行运行 ipynb 文件

通常的办法是先将 ipynb 文件转化成 py 文件,然后在运行。不过感觉有点麻烦,经过我不懈的 Google 终于发现了一种非常简洁的办法。

# Refs: https://github.com/paulgb/runipy
$ pip install runipy
$ runipy mynotebook.ipynb
01/27/2018 01:22:10 PM INFO: Running cell:
import os
import uiautomator2
import functools

01/27/2018 01:22:10 PM INFO: Cell returned
01/27/2018 01:22:10 PM INFO: Running cell:
def print_stars(n):
    print '*' * n

01/27/2018 01:22:10 PM INFO: Cell returned
01/27/2018 01:22:10 PM INFO: Running cell:
print_stars(5)

01/27/2018 01:22:10 PM INFO: Cell returned
01/27/2018 01:22:10 PM INFO: Running cell:


01/27/2018 01:22:10 PM INFO: Cell returned
01/27/2018 01:22:10 PM INFO: Shutdown kernel

runipy 的好处是,可以在运行代码的时候把代码也直接打印了出来,非常方便看代码运行进度。(奇怪,在我 mac 上竟然没有输出)

或者用个比较长的命令,转化成 py 再运行

jupyter nbconvert --to script --execute --stdout mynotebook.ipynb | python

打造更好看的 jupyter notebook

网上有大神做了很多主题,链接看这里 https://github.com/dunovank/jupyter-themes

安装方法

pip install jupyterthemes

然后就是通过命令行调整主题

# dark
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T
# light
jt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T
# 我最喜欢的一种风格,暗色monokai风格,ubuntu字体,宽带调整为88%的宽屏模式
jt -t monokai -f ubuntu -cellw 88%
# 恢复成原有的样式
jt -r

PS:mac 上的字体本身就很好看,不用调

使用 VSCode 内置的 ipython

vscode 内置的 ipython 也挺好用的,只要在代码的上面一行加上 #%% 就会看到 Run cell的按钮,点击之后就能运行直到下一个#%%的代码了。

下面是官网给出的一个演示图,详情

尾声

具体的介绍就写到这里,大家周末愉快。我去看雪去了


↙↙↙阅读原文可查看相关链接,并与作者交流