一、什么是jupyter

1、简介:

jupyter notebook是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。

Jupyter这个名字是它要服务的三种语言的缩写:Julia,PYThon和R,这个名字与“木星(jupiter)”谐音。Jupyter Notebook 已迅速成为数据分析,机器学习的必备工具。因为它可以让数据分析师集中精力向用户解释整个分析过程。我们可以通过Jupyter notebook写出了我们的学习笔记。但是jupyter远远不止支持上面的三种语言,目前能够使用的语言他基本上都能支持,包括C、C++、C#,java、Go等等。

jupyter notebook和我们前面所讲的两篇系列文章ipython其实都是来自同一个产品族,它的前身叫做ipython notebook,至于后面为什么更名这不得而知,这也就是为什么很多文章总是默认将ipython就说成是ipython notebook的原因了。但是既然已经更名了,我们还是区别对待ipython和jupyter notebook。

2、安装与打开

安装这里就不说了,使用过anaconda的人都清楚,在安装anaconda的时候会一起打包安装,如果想要自己安装,可以通过pip或者是conda安装,

怎么打开也很简单,可以直接在anaconda的菜单里面打开jupyter notebook,也可以通过命令行,输入jupyter notebook或者是jupyter-notebook都可以。

我们说了,jupyter notebook会在浏览器中中打开,是一种Web应用,故而有web路径和端口号了,我的打开之后,在浏览器的地址栏会显示如下:

http://localhost:8888/tree

当一次打开多个jupyter notebook的时候,端口号会依次递增8889,8890依次递增。

3、jupyter的作用

前面说了一大堆,也不清楚jupyter到底有啥好的啊,到底有一些什么功能呢?

在介绍 Jupyter Notebook 的功能之前,让我们先来看一个概念:文学编程 ( Literate programming ),这是由 Donald Knuth 提出的编程方法。传统的结构化编程,人们需要按计算机的逻辑顺序来编写代码;与此相反,文学编程则可以让人们按照自己的思维逻辑来开发程序。

简单来说,文学编程的读者不是机器,而是人。 我们从写出让机器读懂的代码,过渡到向人们解说如何让机器实现我们的想法,其中除了代码,更多的是叙述性的文字、图表等内容。这么一看,这不正是数据分析人员所需要的编码风格么?不仅要当好一个程序员,还得当好一个作家。那么 Jupyter Notebook 就是不可或缺的一款集编程和写作于一体的效率工具。

以下列举了 Jupyter Notebook 的众多优点:

(1)极其适合数据分析,想象一下如下混乱的场景:你在终端中运行程序,可视化结果却显示在另一个窗口中,包含函数和类的脚本存在其他文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何。此时 Jupyter Notebook 从天而降,将所有内容收归一处,你是不是顿觉灵台清明,思路更加清晰了呢?

(2)支持多语言,也许你习惯使用 R 语言来做数据分析,或者是想用学术界常用的 MATLAB 和 Mathematica,这些都不成问题,只要安装相对应的核(kernel)即可。这里列出了 Jupyter 支持的所有语言,供您参考。

分享便捷,支持以网页的形式分享,GitHub 中天然支持 Notebook 展示,也可以通过 nbviewer 分享你的文档。当然也支持导出成 HTML、Markdown 、PDF 等多种格式的文档。

(3)远程运行,在任何地点都可以通过网络链接远程服务器来实现运算

(4)交互式展现,不仅可以输出图片、视频、数学公式,甚至可以呈现一些互动的可视化内容,比如可以缩放的地图或者是可以旋转的三维模型。这就需要交互式插件(Interactive widgets)来支持,更多内容请参考这里。

常见的一些jupyter高级应用如:

数学公式编辑

幻灯片制作

魔术关键字

二、jupyter notebook的简单使用

1、常用的jupyter notebook一些命令如下:指的是在cmd中使用jupyter命令

(1)查看jupyter notebook的相关帮助

jupyter-notebook --help

jupyter-notebook --help-all (会显示更详细的信息)

jupyter-notebook -h (只有一个横杠噢,熟悉命令使用的小伙伴都知道)

(2)jupyter notebook常用的子命令——subcommand

list :列出当前的所打开的jupyter notebook的一些信息,比如:

(base) C:\Users\lenovo>jupyter-notebook list
Currently running servers:
http://localhost:8888/?token=5751bd2f4a5675c59c15c9cdfaa7ecbe431ba68b7d23a3c7 :: C:\Users\lenovo
http://localhost:8889/?token=a9f1a6a33a5b0fa93f51552aecbb99a3dec321fdd5e0e74a :: C:\Users\lenovo

这里我打开了两个jupyter notebook,一个端口为8888,一个为8889

stop:关闭所给定的端口号的那一个jupyter

(base) C:\Users\lenovo>jupyter-notebook stop 8888
Shutting down server on port 8888 ...(base) C:\Users\lenovo>jupyter notebook list
Currently running servers:
http://localhost:8889/?token=a9f1a6a33a5b0fa93f51552aecbb99a3dec321fdd5e0e74a :: C:\Users\lenovo

关闭了8888,只剩下一个8889了。
password :给某一个打开的jupyter notebook 服务设置密码,后面直接输入所要添加的密码即可。

(3)jupyter notebook命令的常用选项,下面进介绍一些常用的,想要知道所有的详细使用可以使用

jupyter notebook --help-all 查看jupyter命令的详细信息:

--generate-config  产生默认的配置文件()这个是重点,后面会讲到)

--no-browser 启动jupyter notebook之后不打开浏览器(默认情况下是会打开一个浏览器界面的)

--pylab 同前面讲解ipython的时候很类似,在jupyter notebook里面集成,也可以在jupyter notebook里面使用

%pylab 或者是%matplotlib魔术命令(这是最常用的,后面也会讲到)

--config=<Unicode>  制定一个完全路径的配置文件名称,关于配置文件后面会详解,默认是default,即系统指定的默认配置文件

--ip=<Unicode>  默认是: 'localhost',从前面的现实中也可以看出来,表示的是notebook服务器会监听的IP地址,我们也可以手动指定
--port=<Int>  指定jupyter notebook打开浏览器的端口号,默认是: 8888,也可以手动输入

--notebook-dir=<Unicode> 默认使用默认的目录,表示的是notebook和kernels的目录

--browser=<Unicode> 还可以指定某一个特定的浏览器打开,默认使用系统默认的浏览器打开,是可以自己选定浏览器的。

2、jupyter的简单使用

当我们打开jupyter notebook(不管用什么样的方式打开,使用菜单打开或者是命令行打开是一样的)会在默认的浏览器中看到这样的界面:

但是每一台不同的电脑打开之后的界面是不同的,仔细观察就会发现,这里面现实的一些文件夹就是电脑用户目录下面的文件夹,这是为什么呢?那是因为jupyter notebook在启动的时候总是有一个默认的目录,一般情况下,使用户的目录。

那怎么查看默认目录,或者是我想要修改默认目录该怎么做呢?

实际上,jupyter的一些默认设置都设置在一个默认的配置文件中,我们可以查看并且修改配置文件中的内容

(1)查看配置文件

在cmd中使用如下命令:jupyter-notebook --generate-config

(base) C:\Users\lenovo>jupyter-notebook --generate-config
Writing default config to: C:\Users\lenovo\.jupyter\jupyter_notebook_config.py

可见我的默认配置文件在:C:\Users\lenovo\.jupyter\jupyter_notebook_config.py中,现在我们查看配置文件的信息。得到如下:

打开之后发现,这本质上应该是一个python的 py文件,但是实际上全部都是用井号#开头的,这不是意味着这都是一些注释吗?可以这么说,但实际上观察会发现,有的有两个井号开头 ##,这才是注释文本,而那些以一个井号#开头的实际上就是默认的配置信息,也就是我们要修改的。当然这个文件很长,我不会一个一个讲解每一个配置信息是什么意思,我指将如何自定义默认目录。

我们通过编辑器,搜索directory定位到如下位置:

## The directory to use for notebooks and kernels.
#c.NotebookApp.notebook_dir = ''

这句话就是设置jupyter的目录的,可见默认值是没有的,我们现在比如要使它指定到我们自己的目录,比如我要让它指定到F盘中的myjupyter文件夹,则修改如下:

## The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = 'F:\myjupyter'

保存修改的文件并关闭!然后再打开,发现如下信息,从下面的信息可以看见这样一句话:

Serving notebooks from local directory: F:\myjupyter

这就说明修改成功。

(base) C:\Users\lenovo>jupyter-notebook
[I 14:17:57.432 NotebookApp] JupyterLab beta preview extension loaded from D:\ProgramData\Anaconda3\lib\site-packages\jupyterlab
[I 14:17:57.432 NotebookApp] JupyterLab application directory is D:\ProgramData\Anaconda3\share\jupyter\lab
[I 14:18:00.231 NotebookApp] Serving notebooks from local directory: F:\myjupyter
[I 14:18:00.232 NotebookApp] 0 active kernels
[I 14:18:00.232 NotebookApp] The Jupyter Notebook is running at:
[I 14:18:00.232 NotebookApp] http://localhost:8888/?token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b
[I 14:18:00.232 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 14:18:00.234 NotebookApp]Copy/paste this URL into your browser when you connect for the first time,to login with a token:http://localhost:8888/?token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b&token=ad2aa0097b0687bbd8b5b11909101533630e781e7c28753b
[I 14:18:00.786 NotebookApp] Accepting one-time-token-authenticated connection from ::1

注意事项:

第一、文件夹必须先创建好,比如这里F盘下面的myjupyter文件夹要先创建好;不然会jupyter初始化时会找不到目录

第二、要取消注释,c前面的#要去掉(我还不知道这是为什么?哪位知道望告知!)

第三、要注意文件名不可以是数字

除此之外,上面的这些操作,推荐全部使用anaconda自带的Anaconda Promp进行操作,因为它提供了非常好的环境管理功能,而在系统自身的cmd中操作,可能因为环境变量设置等相关的一些原因,不成功。比如我在多个环境中都安装了jupyter,但是cmd中环境变量所指向的那个是A,我们修改的可能是B的配置文件,这样通过cmd启动jupyter发现依然未改变。

现在打开,则发现web界面变成了如下:

三、jupyter运行环境的配置——一python运行环境为例

jupyter notebook本质上是一个web应用程序,我们可以在上面书写代码,但是代码本身的运行环境是需要自己安装的,没有运行环境,即使是在jupyter notebook里面书写的代码怡然没有办法运行。因为代码本身,web应用程序是不认识的。

幸运的是,在使用anaconda安装的时候,会默认将安装jupyter,而且会安装一个Python的运行环境,所以打开jupyter的时候,可以直接看见这个运行环境,在jupyter里面称之为内核kernel,如下所示:

在右上角点击下拉按钮,会得到如图所示的结果,

第一个python3 ,表示的就是默认的python3 kernel,它是随着anaconda一起安装的;

Text File ,表示的是新建一个文本文件

Folder ,表示的是新建一个文件夹

Terminal ,表示的是在浏览器中新建一个用户终端,即类似于cmd的shell。

但是,这是远远不够的,因为我不可能所有的程序都是使用这一个python kernel,使用过TensorFlow的人都知道如何创建一个新的运行环境,打包TensorFlow所依赖的各种包。本文以python为例,我还有另外两个环境,一个是TensorFlow,一个是pytorch,还有一个是,mxnet。他们都是使用conda创建的python运行环境。其实就一句话:

conda create -n tensorflow python=3.6

conda创建运行环境的方法这里就不详细说明了,可以参阅相关文章。注意:因为anaconda的服务器在国外,上面的执行速度实在是太慢,甚至等了半天,然后连接失败,所以,我们可以使用清华大学的镜像进行下载,在使用上面执行命令之前,添加一句:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

再使用:conda create -n tensorflow python=3.6

这会快非常多!!!

注意:

TUNA 还提供了 Anaconda 仓库的镜像,运行以下命令:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

即可添加 Anaconda Python 免费仓库。

直接粘贴复制以上代码即可。另外,要一行一行运行,并且每一行运行完没有任何结果,直接运行下一行即可。

三行代码运行完,可以运行 conda install numpy 测试一下吧。

1、原始的方法解决多个Python运行环境问题

就是走在每一个python的运行环境里面都使用conda install notebook 安装一个与之对应的notebook,然后我在做开发的时候,需要用什么环境,我就在每一个Python环境中的script文件夹下面打开对应的哪个jupyter notebook,这当然没问题。但这样做不是很高级,我需要安装很多次,而且每次在使用jupyter notebook的时候都只能使用一个环境,局限性很大。

2、更高级的办法

现在,比如我已经在anaconda里面创建了一个名为tensorflow的环境,但是,怎么把它添加到jupyter里面呢?

(1)方法一:

首先在anaconda prompt里面激活我们需要的环境,然后执行下面一个命令:

(base) C:\Users\lenovo>activate python27

(python27) C:\Users\lenovo>python -m ipykernel install --name python27
Installed kernelspec python27 in C:\ProgramData\jupyter\kernels\python27

(base) C:\Users\lenovo>activate tensorflow

(tensorflow) C:\Users\lenovo>python -m ipykernel install --name tensorflow
Installed kernelspec tensorflow in C:\ProgramData\jupyter\kernels\tensorflow

总结:两步走,

第一步:激活相应的环境

第二部分:执行命令 python -m ipykernel install --name 环境名称

现在打开我们的jupyter notebook,查看python环境如下:

补充:也有人用下面的方法:

先激活某一个Python环境:然后再执行下面两个语句:

conda install -n 环境名称 ipykernel

python -m ipykernel install --user

注意:上面这种方式都是可以的,但问题是还是需要针对每一个环境安装一次ipykernel,而且有时候不知怎么回事,总是会遇见一些乱七八糟的错误,我还没搞清楚是为什么,如果谁知道,望告知。

(2) 方法二——一步到位的方法

在我创建完我需要的运行环境之后,然后只需要在base运行环境中执行一个命令即可。

(base) C:\Users\lenovo>conda install nb_conda

将会将所有的kernel全部添加进去,这种方法是最快的,而且最不容易出错,推荐使用。

(3)补充方法——综合前面两者

(1)一步到位:

(base) C:\Users\lenovo>conda install nb_conda

(base) C:\Users\lenovo>conda install nb_conda_kernels

两种方法均可以

(2)分步完成:

第一步:激活某一个环境activate mxnet

第二步:在环境中安装ipykernel:pip install ipykernel

第三步:再执行命令:

python -m ipykernel install --user --name mxnet --display-name mymxnet

后面的蓝色部分可以省略。第一个mxnet指的是我激活的那一个环境名,这里是mxnet;第二个mymxnet是我要在jupyter里面显示的内核名称,是自己自定义的,我定义为mymxnet。

全文总结:关于ipython系列的文章到这里就结束了,三篇文章,从ipython到jupyter notebook,希望对于一些有需要的小伙伴有所帮助,本来还打算写一篇关于jupyter notebook的使用的,但是这种教程网上实在太多了,就不在这里画蛇添足了。

史上最详细、最完全的jupyter notebook使用教程,Python使用者必备!——ipython系列之三相关推荐

  1. 史上最详细SharePoint 2007安装步骤图解新手教程

    Microsoft Office SharePoint Server 2007(简称MOSS 2007)可以构建企业门户站点,并实现团队协作.内容管理.工作流.商业智能等强大功能,是微软2007 Of ...

  2. apereo cas mysql_史上最详细的 Apereo CAS 5.3开发教程:二、Apereo CAS 5.3 Server环境搭建,登录名,密码从数据库中获取...

    Apereo CAS 5.3 项目源码地址:https://github.com/apereo CAS 系列详解:https://blog.csdn.net/makyan/column/info/36 ...

  3. 史上最详细Vue-CLI脚手架快速创建Vue项目教程

    Vue-CLI脚手架 前言 安装Vue CLI 使用参考文档 一.创建项目存储文件夹 二.CMD打开当前文件夹所在路径 三.项目的配置 1.创建项目存储位置 2.项目名命名 3.项目预设 4.项目功能 ...

  4. 史上最详细的微生物扩增子数据库整理

    声明:文件所有链接内容来自"生信控"公众号,已经获作者向屿授权. 本人对每个数据库的使用目的和经验配导读,需要使用的小伙伴读点击链接跳转原文学习. "生信控"相 ...

  5. 史上最详细版Centos6安装详细教程

    镜像CentOS-6.8-x86_64-bin-DVD1.ISO 将下载好的镜像上传到服务器,并选择该镜像(详情请看上篇exsi镜像上传文章) 一.安装开始 开机选择第一项 这里询问我们是否要对光盘进 ...

  6. 史上最详细“截图”搭建Hexo博客——For Windows

    http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...

  7. 不仅有史上最详细Docker 安装Minio Client,还附带解决如何设置永久访问和永久下载链接!!(详图)绝对值得收藏的哈!!!!

    背景: 这两天在整理知识点,然后在学习Minio,一开始遇到更新,整了我不少时间,之前用的太久了,改了不少东西.用了之后发现不知道怎么设置成永久访问,就出了这篇文章. 史上最详细Docker安装最新版 ...

  8. 史上最详细Docker安装最新版Minio 带详解 绝对值得收藏!!! 让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路!解决启动了但是浏览器访问不了的原因

    让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路! WARNING: Console endpoint is listening on a dynamic port (34451) ...

  9. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!

    史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!! 部署jar 包方式: https://blog.csdn.net/weixin_45821811/article/d ...

最新文章

  1. python中random模块中包含了随机数相关的功能函数_Python中random模块生成随机数详解...
  2. PNAS: 儿童生长发育迟缓 = 长期饥饿?
  3. css input[type=file] 样式美化,input上传按钮美化
  4. MVC基于角色权限控制--用户管理
  5. Java中恒等条件判断:“equals”和“==”
  6. Python+Flask+Echart+WordCloud:豆瓣爬虫项目的可视化数据
  7. 服务高可用:幂等性设计
  8. bzoj3224: Tyvj 1728 普通平衡树(打个splay暖暖手)
  9. 玩转oracle 11g(47):oracle删除非空表空间
  10. 计算机网络中的高层应用,第四章计算机网络中的高层应用-.ppt
  11. idea 父文件_万事开头难!最新MyBatis程序配置教程(IDEA版)
  12. 3499元被吐槽太贵!A15加持:新iPhone SE正式发布 还有“苍蝇绿”iPhone 13
  13. 制作CAB自解压文件的工具——IExpress
  14. php中编码转换,php程序中的编码转换
  15. html微信表情,emoji表情,QQ表情,微信表情转换
  16. calico更换ip地址池-k8s
  17. 棋牌类游戏的开发心得
  18. 提高你计算机科学知识的5本书
  19. Win10提示缺少mscomctl.ocx文件
  20. TikZ做思维导图并插入幻灯片

热门文章

  1. 海阔凭鱼跃,天空任鸟飞,你也一定可以
  2. 【总结】图像处理与计算机视觉:基础,经典及发展
  3. selenium+webdriver操作cookie
  4. NineData获“年度创新产品”奖
  5. Java毕业论文设计(农业综合性服务平台)
  6. Hadoop搭建:完全分布式(Linux版本)(一阶段)
  7. sklearn_数据预处理和特征工程
  8. 工业RFID在自动化控制中的解决方案
  9. 字体、图标字体、行高、文本样式(css)
  10. JavaScript利用正则表达式来禁止键盘输入数字