Jupyter Hub/Lab/Notebook 简介#

Jupyter 是一个开源平台,其中包含一套工具,包括:

  • Jupyter Notebook:一个基于浏览器的应用程序,可以创建和共享包含实时代码、方程式、可视化和叙述性文本的文档(即 Jupyter Notebook 文件)。

  • Jupyter Lab:一个基于浏览器的应用程序,可以访问多个 Jupyter Notebook 文件以及其他代码和数据文件。

  • Jupyter Hub:可以在服务器上运行的多人版 Jupyter Notebook and Lab。

我们用的是Lab,写的是Notebook,Hub支持多人使用Lab。

1 Jupyter Hub/Lab/Notebook 区别与联系#

  • JupyterHub 是为多个用户提供 Jupyter Notebook 的集成服务系统,JupyterHub 下用户环境彼此隔离,无法相互共享,每个用户需要单独配置自己的 Python/Conda 环境等。

  • JupyterHub 与 Jupyter Notebook/Lab 并非包直接含关系,JupyterHub 初始安装不包含 Jupyter Notebook/Lab,二者甚至不在一台服务器上,需要各自搭建后,通过配置组合在一起。

  • JupyterHub、Jupyter Notebook/Lab 分别有自己的仓库、文档、技术栈(如:除 Python、H5 外,JupyterHub 涉及 NodeJS,JupyterLab 涉及 TypeScript)。因此,JupyterHub 与 Jupyter Notebook/Lab 的接口、主题、插件等定制开发也是分别独立的项目范畴。

  • JupyterHub 支持第三方 Oath 认证登录,需要另外开发配置。常见的包括 GitHub、GitLab、Google 等(主要针对编程群体,因此不包括 Facebook、Twitter)。

  • JupyterHub 下又分为三项目:JupyterHub、TLJH、Z2JH,每个项目都各自的文档系统、Git仓库、环境配置。每个项目的环境搭建方式大概又各可分为 3 种方式:Conda/Pip 安装、Docker 安装、Dev 环境安装。对应到开发,要根据具体需求确定一个方向,搭建配置指定的环境项目。

简而言之,在研发中心的工程师们已经给大家安装好了Jupyterhub,我们不用管它是怎么回事,只知道有这么个东西,我们能用它提供给我们的jupyterlab写jupyter notebook就行了。

接下来,让我们使用jupyterlab了解jupyter notebook的写法吧。

2 试试编辑Jupyter Notebook#

Jupyter Notebook 创建的就是以.ipynb为后缀的文件。我们可以先来了解一下它的含义,i:云的含义,py:Python,nb:notebook。需要注意的是,不管我们根据什么内核,例如Java,创建的notebook文件也是.ipynb,不会说是变成.ijvnb

Jupyter Notebook 文件格式 ( .ipynb) 将描述性文本、代码块和代码输出组合在一个文件中。我们运行代码时,它会在笔记本文件中生成输出,包括绘图和表格。在我们编辑时,.ipynb单元格有三种模式可切换,其中最常用的两种是——Markdown与Code。Code就是编写代码的模式,Markdown模式下我们能编辑文本。

当我们想使用Markdown时,我们既可以在jupyter文件(.ipynb)中创建 markdown cell来编写markdown文本,也可以选择新建Markdown文档(后缀名为.md)来进行。

下面我们先看看markdown是怎么回事。

2.1 使用markdown编辑文字#

Markdown是一种标记语言,而Markdown文件则可以用于格式化文本。此外,它也可以用来制作格式化良好的文档,包括PDF和网页。

当我们在文档中使用Markdown来格式化文本时,它类似于使用像Microsoft Word或Google Docs这样的文字处理软件中的格式化工具(如粗体、标题1、标题2)。只不过我们不需要使用鼠标来应用格式化,而是使用语法,如** 它在markdown中可以对文本加粗 **# 表示这里是一个标题。

在Markdown语法中,我们可以以多种方式格式化文本,如制作标题、加粗和斜体字、创建列表、添加链接、格式化数学符号和制作表格。这些方式也能让我们的文本以一种视觉上吸引人并且有组织的方式来呈现出来.

了解了以上的基本知识,下面就让我们来看看如何编写markdown文档,即mardkown常用语法。这里我们只介绍一些最基本的,大家可以跟着做一做,更多内容用到的时候可以随时查询:markdown语法

我是三级标题#

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

斜体和粗体#

斜体或_斜体_

粗体

加粗斜体

~~删除线~~

超链接#

Markdown 支持两种形式的链接语法: 行内式和参考式两种形式,行内式一般使用较多。

行内式#

语法说明 :[ ]里写链接文字,()里写链接地址,()中的""中可以为链接指定title属性,title属性可加可不加。title属性的效果是,当我们的鼠标悬停在链接上的时候,会出现指定的 title文字。综上所述,我们采用行内式链接时,其语法是[链接文字](链接地址 "链接标题")。注意:链接地址与链接标题前要有一个空格。

iheadwater_hackweek_tutorials

iheadwater_hackweek_tutorials

参考式#

参考式超链接一般用在学术论文上面,或者另一种情况,如果某一个链接在文章中多处使用,那么使用引用的方式创建链接,可以便于我们对链接进行统一的管理。

语法说明:参考式链接分为两部分,第一部分是文中的写法 [链接文字][链接标记],在文本的任意位置添加[链接标记]:链接地址 "链接标题",链接地址与链接标题前要有一个空格。

在第二部分中,如果链接文字本身可以做为链接标记,我们也可以采用[链接文字][ ]。随后在文本中添加[链接文字]:链接地址的形式。具体如下所示。

我经常浏览hydrusiheadwater_hackweek_tutorials

自动链接#

语法说明:Markdown 能支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是我们用<>包起来, Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样,例如:

列表#

使用 *,+,- 表示无序列表

  • 无序列表项 一

  • 无序列表项 一

  • 无序列表项 一

有序列表则使用数字接着一个英文句点

  1. 有序列表项 一

  2. 有序列表项 二

  3. 有序列表项 三

引用#

语法说明:引用需要在被引用的文本前加上>符号。

打开书本。
打开电灯

插入图像#

图片的创建方式与超链接相似,只需在[]前加上英文感叹号!即可。而且和超链接一样也有两种写法,行内式和参考式写法。

可用相对路径加载图片,什么是相对路径

例如:

![](../img/water.jpg)

展示内容如下:

公式#

\[e=\frac 1 2 mv^2\]

其余的我们可参考这里

2.2 试试运行一行代码#

接下来是notebook中的代码模块,让我们先运行一个最简单的代码吧:

print("Hello World!")
Hello World!