目录

  • 1.背景知识
  • 1.1 jupyter notebook是什么
  • 1.2 jupyter notebook 的工作原理
  • 2.jupyter notebook 基本用法
  • 2.1 jupyter notebook 服务器的基本操作
  • 2.2 修改jupyter的初始运行目录
  • 2.3 如何在jupyter notebook中导入.ipynb文件?或者说别人的文件我们可以拿来做什么?
  • 3.技巧
  • 3.1 代码自动补全
  • 3.2 快速切换不同运行环境
  • 3.3


1.背景知识

1.1 jupyter notebook是什么

jupyter notebook 此前被称为 IPython notebook,是一个交互式笔记本,支持运行 40 多种编程语言。(百度百科)

来源:Fernando Perez 发起的 IPython 项目
(IPython 是一种交互式 shell,与普通的 Python shell 相似)
本质:一个 Web 应用程序
内核:Jupyter Notebook 与 IPython终端 共享同一个内核

1.2 jupyter notebook 的工作原理

(部分摘自)

最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将结果发送回 notebook。当前架构与之相似,具体见下图。

jupyter notebook 架构 jupyter notebook原理_jupyter notebook 架构


核心是 notebook 的服务器。你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。之后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb)写入到该服务器中。

此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。例如,早期的两个非 Python 内核分别是 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 Jupyter 由 Julia、Python 和 R 组合而成。如果有兴趣,不妨看看可用内核的列表。

另一个优点是,你可以在任何地方运行 notebook 服务器,并且可通过互联网访问服务器。通常,你会在存储所有数据和 notebook 文件的自有计算机上运行服务器。但是,你也可以在远程计算机或云实例(如 Amazon 的 EC2)上设置服务器。之后,你就可以在世界上任何地方通过浏览器访问 notebook。

2.jupyter notebook 基本用法

2.1 jupyter notebook 服务器的基本操作

启动服务器:终端输入jupyter notebook

如果同时启动了另外一个notebook服务器,新服务器会尝试使用端口 8888,但由于此端口已被占用,因此新服务器会在端口 8889 上运行。

关闭服务器:点击notebook上的“shutdown”按钮

请确保已经保存好数据。注意,如果不手动关闭,直接关掉整个页面的窗口是不起作用的,反而会降低运行速度。

以及其他常用:

jupyter notebook 架构 jupyter notebook原理_jupyter notebook_02

2.2 修改jupyter的初始运行目录

  1. 为什么要需要改?
    1.1 实际问题
    一开始不太懂 jupyter notebook 的运行原理,在首次接触docker的时候,出现了下面的问题,一时还不知道应该怎么去解决:是应该用默认地址还是需要自己选择一个固定地址?(好像是配置docker的过程中,占用了jupyter notebook服务器的8888地址)
    ——还有待进一步理解如何运行远程服务器以及别人的notebook

jupyter notebook 架构 jupyter notebook原理_Web_03

1.2 理论

notebook 默认在本地运行,其服务器运行地址是 http://localhost:8888/ (localhost 表示你的计算机,而 8888 是服务器的通信端口。)。

因此,为了方便管理自己的文件,可以修改jupyter运行的初始目录,比如可以在自己的电脑中专门建一个文件夹,专门用来打开jupyter文件

更改地址还有一个好处就是让该 notebook 可以被公开访问,这样,任何知道 notebook 地址的人都可以连接到 notebook 进行远程修改。

  1. 如何修改?
    2.1修改初始目录(永久修改):

2.2在任意路径下打开(临时修改):
终端下,cd(空格)+文件路径(mac下可以拖拽文件到终端显示其具体路径),enter之后再输入jupyter notebook即可。

2.3 如何在jupyter notebook中导入.ipynb文件?或者说别人的文件我们可以拿来做什么?

  1. 本地文件的导入
    方法一:
    先将.ipynb导成.py的格式,然后再调用(file - download as)先将.ipynb导成.py的格式,然后再调用(file - download as)
    方法二:
    使用“upload”,将文件上传至服务器
  2. 登录并使用远程服务器的文件
    参考:https://www.jianshu.com/p/87e28544a7b6?utm_campaign

2.3 快捷键

jupyter notebook 架构 jupyter notebook原理_jupyter notebook 架构_04

jupyter notebook 架构 jupyter notebook原理_Python_05

jupyter notebook 架构 jupyter notebook原理_Python_06

3.技巧

3.1 代码自动补全

jupyter notebook 架构 jupyter notebook原理_服务器_07

jupyter notebook 架构 jupyter notebook原理_服务器_08

3.2 快速切换不同运行环境

很多人安装完以后发现即便通过anaconda创造了新的虚拟环境,但是在jupyter 中并没有体现出来。

解决方法:

首先,在命令窗口中activate你创造的那个新环境。

然后,安装ipykernel

conda install ipykernel

安装完后,重启jupyter notebook就可以看见kernel的选项了

3.3