jupyter 和 ipython的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jupyter 和 ipython的区别相关的知识,希望对你有一定的参考价值。
在 IPython 的官网(ipython.org)上,介绍其的第一句话便是:IPython 是一个加强版的交互式 Shell。另外很多介绍 IPython 的文章也常以这句话开头,但这句话实在是等于没说。让 IPython 在各种 shell(IDE) 中脱颖而出,成为科学计算标配的,并不是按 Tab 键代码补完、以 % 开头的魔术命令这些大家都有的东西,而是与 matplotlib 这个数据可视化(绘图)包的深度集成以及奇妙的 Notebook。IPython 较早的富 GUI 实现应该是 Qt Console。过去在标准 shell 里绘图时,弹出的绘图窗口会接管 shell 会话的控制权,你想继续输入命令就必须先把绘图窗口关掉。这对于希望同时实现可视化和交互式过程的数据分析用户来说显然是难以忍受的,因此 Qt console 站出来解决了这个问题。在 Qt console 中通过 matplotlib 绘制的图形会独立嵌于控制台中,并不影响你继续输入命令。
2011年,由 Brian Granger 领导的 IPython 团队开始开发一种基于Web技术的交互式计算文档格式,即 IPython Notebook。为什么说它是文档格式,而非计算工具呢?实际上它两者都是。Notebook 在交互上使用了 C/S 结构,它通过 Tornado 建立一个 shell 服务器,并使用浏览器作为客户端。另外 notebook 页面都被保存为 .ipynb 的类 JSON 文件格式。这种文件格式也是 Notebook 最吸引人的地方。
IPython Notebook 更详细的介绍在下面第二节中给出,第一节讲的是一些对 IPython 的各种实现通用的功能。
基础
Tab 键自动完成
和其他 IDE 差不多,自己多试试就好了
内省
在变量名或命令的前面或后面加一个 “?” 并执行,可以用于显示该对象的一些通用信息,如对象类型、文档字符串等,这就叫做对象内省。这种操作查看到的信息,尤其是函数和类的信息,比通常直接引用变量名然后回车所看到的(__repr__)要好。“?” 的另一个用法是可以搜索 IPython 的命名空间,配合通配符使用效果如下:
In [1]:import numpy as np
In [2]:np.*load*?
np.load
np.loads
np.loadtxt
np.pkgload
使用双问号“??”还可以查看对象的源代码(如果可见的话)。
魔术命令
在 IPython 的会话环境中,所有文件都可以通过 %run 命令来当做脚本执行,并且文件中的变量也会随即导入当前命名空间。即,对于一个模块文件,你对他使用 %run 命令的效果和 from module import * 相同,除非这个模块文件定义了 main 函数(if __name__ == \'__main__:\'),这种情况下 main 函数还会被执行。
这种以 % 开头的命令在 IPython 中被称为魔术命令,用于加强 shell 的功能。常用的魔术命令有:
%quickref 显示 IPython 快速参考
%magic 显示所有魔术命令的详细文档
%debug 从最新的异常跟踪的底部进入交互式调试器
%pdb 在异常发生后自动进入调试器
%reset 删除 interactive 命名空间中的全部变量
%run script.py 执行 script.py
%prun statement 通过 cProfile 执行对 statement 的逐行性能分析
%time statement 测试 statement 的执行时间
%timeit statement 多次测试 statement 的执行时间并计算平均值
%who、%who_ls、%whos 显示 interactive 命名空间中定义的变量,信息级别/冗余度可变
%xdel variable 删除 variable,并尝试清除其在 IPython 中的对象上的一切引用
!cmd 在系统 shell 执行 cmd
output=!cmd args 执行cmd 并赋值
%bookmark 使用 IPython 的目录书签系统
%cd direcrory 切换工作目录
%pwd 返回当前工作目录(字符串形式)
%env 返回当前系统变量(以字典形式)
对魔术命令不熟悉的话可以通过 %magic 查看详细文档;对某一个命令不熟悉的话,可以通过 %cmd? 内省机制查看特定文档。值得一提的是,IPython 中使用 del 命令无法删除所有的变量引用,因此垃圾回收机制也无法启用,所以有些时候你会需要使用 %xdel 或者 %reset。
历史输入和输出变量
与标准 Shell 类似,IPython 中也可以通过 _ 和 __ 访问上一次和上上一次的输出。同时你肯定注意到了,IPython 中每一次的输入输出都有序号。访问历史 X 行输出的方法为:_X;访问历史 X 行输入的方法为:_iX。因为访问历史输出的使用概率较历史输入大很多,所以访问历史输出仅使用下划线加行号即可,同时为了区分,访问历史输入时需添加小写字母 “i”,代表 “in”。
In [24]:1+1
Out[24]:2
In [25]:_i24
Out[25]:\'1+1\'
In [26]:_24
Out[26]:2
Notebook
Notebook 的官方信息可以从 ipython.org/notebook 获得,不过好像被墙了。上不去的话也可以访问它的 github 页面,ipython/examples/Notebook 目录下有很多可供参考的内容。前面说过 Notebook 有一种 .ipynb 的文件格式,当你打开这个例程目录下的某个文件后,就能体会到 Notebook 的奇妙之处了。
演示文档
目前在各种 Python 研讨会上,一种流行的演示手段就是使用 IPython Notebook,然后再将 .ipynb 文件发布到网上以供所有人查阅。除了前面说过的可以内嵌 matplotlib 绘图外,Notebook 还同时提供了对 LaTex 和 MarkDown 的支持!
在此输入图片描述
如上图便展示了一个 .ipynb 文件的示例页面。其中一对 In Out 会话被视作一个单元,称为 cell。第一个 cell 里我写入的内容其实是:
##LaTex 演示
---
$Z=\\fracX-\\barXS$
分别使用了 MarkDown 和 LaTex 的语法。按下 Shift + Enter 后这段内容就被渲染成了图片中的样子。
cell 特别亲切的地方在于:它可以作为一个类似“段落”的概念来进行编辑,不管是执行前还是执行后,而且既可以针对内容进行编辑,也可以对 cell 整体应用 copy、paste、cut 等操作,甚至还可以前后移动 cell 的位置。这带来的好处是,在大量试验性的交互操作过后,他不会像普通 shell 那样留下无数没用的 IO 内容。如果某条命令的输出不理想或者报了错,你就可以回头编辑后重新运行,或把它移位或干脆删掉。这样在很久的一段交互过程后,Notebook 留下的反而是一份干净整洁的文档。
.ipynb 文件使用的是一种类 JSON 的文本格式,就像这样:
"worksheets": [
"cells": [
"cell_type": "markdown",
"metadata": ,
"source": [
"##LaTex \\u6f14\\u793a\\n",
"---\\n",
"$Z=\\\\fracX-\\\\barXS$"
]
,
这种交互式计算环境,对绘图、数学公式、简易排版语法的支持,还有一种方便的文档格式,共同帮助 Notebook 成为了 Python 科学计算的理想工具。另外这种使用浏览器和服务进程的 C/S 结构还暗含了一种远程连接可能,抛开安全性不谈的话,其在教学方面也有很高的潜力。
操作指南
当通过 IPython Notebook.exe 进入应用时,首先打开的是 Home 页面,地址一般为:http://127.0.0.1:8888/tree。Home 目录下会列出所有的历史文件记录,右上角则有一个 “New Notebook” 按钮可以新建一个会话。
在 .ipynb 文件的交互页面,需要注意的除了标准的 IPython 语法外,就是页面抬头处的菜单栏和工具栏了。Notebook 很贴心地提供了非常友好的帮助页面,因此本文不再赘述。基本看完这两个页面(内容很少)后就能对 Notebook 的操作方式了解的差不多。 参考技术A
IPython是一个交互式计算系统。主要包含三个组件:增加的交互式 "Python shell",解耦的双过程通信模型,交互式并行计算的架构。支持变量自动补全。
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。
IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。
IPython 是基于BSD 开源的。
IPython 为交互式计算提供了一个丰富的架构,包含:
强大的交互式 shell
Jupyter 内核
交互式的数据可视化工具
灵活、可嵌入的解释器
易于使用,高性能的并行计算工具
用户可以通过电子邮件,Dropbox,GitHub 和 Jupyter Notebook Viewer,将 Jupyter Notebook 分享给其他人。
在Jupyter Notebook 中,代码可以实时的生成图像,视频,LaTeX和javascript。
参考技术B 官方: "IPython is a growing project, with increasingly language-agnostic components. IPython 3.x was the last monolithic release of IPython, containing the notebook server, qtconsole, etc. As of IPython 4.0, the language-agnostic parts of the project: the notebook format, message protocol, qtconsole, notebook web application, etc. have moved to new projects under the name Jupyter. IPython itself is focused on interactive Python, part of which is providing a Python kernel for Jupyter."由此可见,Jupter是更进一步了,它代表着IPython的未来。 参考技术C jupyter是ipython的升级版
Jupyter Notebook(iPython)
一、Jupyter Notebook介绍
1、什么是Jupyter Notebook
Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过编码开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍。
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
2、Jupyter Notebook特点
- 编程时具有语法高亮、缩进、tab补全的功能。
- 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
- 对代码编写说明文档或语句时,支持Markdown语法。
3、安装
(1)安装前提
安装Jupyter Notebook的前提是需要安装了Python(3.3版本及以上,或2.7版本)。
(2)使用Anaconda安装
建议通过安装Anaconda来解决Jupyter Notebook的安装问题,因为Anaconda已经自动为你安装了Jupter Notebook及其他工具,还有python中超过180个科学包及其依赖项。
可以通过进入Anaconda的 https://www.anaconda.com/download 自行选择下载
二、使用Jupyter Notebook
1、运行
$ jupyter notebook
运行后自动打开网页:
2、使用介绍
(1)新建文件和文件夹
通过New——Text-File默认生成一个.txt文本文件,然后再通过修改后缀,改为一个.py文件:
文件编辑后,通过command+s保存文件。
(2)新建源文件
通过New——Python 3新建的是一个基于jupyter的源文件。文件的后缀是ipynb。
(3)cell类型及操作
注意添加cell时,要点击右上角的“+”:
cell的两种主要的类型见上图。
编写好cell后,点击run(运行按钮),就可以得到输出的结果。
(4)markdown模式
markdown编写好执行后,输出结果就显示为不可编辑状态了,需要双击cell框,进入编辑模式。
markdown中可以通过html代码来给文档设定样式。
执行后显示效果如下:
3、快捷键
(1)插入cell
b:向下插入一个cell
a:向上插入一个cell
(2)cell类型切换
m:将cell的类型切换成markdown类型
y:将cell的类型切换成code类型
(3)执行和帮助
shift+enter:执行cell
shift+tab:查看模块的帮助文档
tab:自动补全
以上是关于jupyter 和 ipython的区别的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PyQt4 在 Jupyter 和 IPython 笔记本之间的行为不同?