Python安装Jupyter Notebook配置使用教程

原文见:https://blog.csdn.net/qq_27825451/article/details/84427269

一、什么是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的使用的,但是这种教程网上实在太多了,就不在这里画蛇添足了。
————————————————
版权声明:本文为CSDN博主「LoveMIss-Y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27825451/article/details/84427269

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

鸣谢网址&#xff1a;http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到&#xff0c;GroupingGrid…

九个Console命令,让js调试更简单

一、显示信息的命令 1: <!DOCTYPE html>2: <html>3: <head>4: <title>常用console命令</title>5: <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />6: </head>7: <body>8: …

numpy——axis

size()和max()中的含义 以前我理解axis0代表行&#xff0c;axis1代表列&#xff1b; 但是这种含义在函数size()和max()中恰恰相反&#xff1b; 其实不是这样的&#xff0c;我们回到单词axis本身&#xff0c;它的意思是“轴”&#xff0c;没错轴就是代表一个方向&#xff0c;像…

Android ListView几个重要属性

1、transciptMode属性&#xff0c;需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息&#xff0c;并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件&#xff08;支持ScrollBar&#xff09;自动滑动到最底部…

Halcon例程(基于GMM模型的分类)详解 —— classify_citrus_fruits.hdev

一、例程简介 该例程比较有代表性&#xff0c;属于Halcon里的分类方法之一&#xff0c;直接调用Halcon封装好的GMM分类器&#xff08;高斯混合模型&#xff09;对橘子和柠檬进行分类。GMM属于概率分类方法&#xff0c;属于P(Y|X)&#xff0c;通过对样本的概率密度分布进行估计…

正则表达式匹配不包含特定字符串解决匹配溢出问题

匹配溢出问题在正则表达式当中算是比较常见的问题&#xff0c;它常常导致我们匹配结果莫名其妙的出错&#xff0c;本文专门为你讲解如何通过匹配不包含特定字符串的方法来解决这类问题。 那么&#xff0c;什么是匹配溢出呢&#xff1f; 下面我们来看个例子&#xff1a; 源文本&…

numpy——mgrid

x1,x2 np.mgrid(x1min:x1max:num1j,x2min:x2max:num2j)x1返回的是x1min到x1max间均匀分成num1个数&#xff0c;进行横向扩展为方阵 x2返回的是x2min到x2max间均匀分成num2个数&#xff0c;进行纵向扩展为方阵 Examples -------- >>> np.mgrid[0:5,0:5] array([[[0,…

Halcon例程(基于3D形状匹配识别方法)详解 —— create_shape_model_3d_lowest_model_level.hdev

一、例程简介 最近在研究3D识别方面的东西&#xff0c;查了不少资料&#xff0c;发现halcon里有不少关于三维物体识别的例程&#xff0c;这里对其中一个做出详解。该例程是基于三维匹配方法的&#xff0c;因为有三维模型SM3&#xff0c;所以不需要自己创建&#xff1b;另因为例…

15.瀑布流、测量

排行界面TopProtocol &#xff1a;json数据就是写字符串&#xff0c;所以不需要写bean对象public class TopProtocol extends BaseProtocol<List<String>> { Override public List<String> paserJson(String json) { List<String> datasnew ArrayList&…

linear-gradient线性渐变

background:linear-gradient(180deg, sliver 20%, skyblue 80%, gray 100%);180deg 是线性渐变的角度,水平方向;如果是90deg,则是垂直方向. silver 20% 是最上面的颜色和该颜色所在的位置,可以为负值,,如 linear-gradient(180deg, silver -7%, pink 80%, skyblue 127%);的效果是…

numpy——stack

np.stack(array,axis,outNone)&#xff0c;函数原型。 其中最重要是的这个axis怎么理解的。 举例说明&#xff1a;arrays [np.random.randn(3, 4) for _ in range(10)] 会生成一个 10 *( 3 * 4 )的矩阵列表。十个矩阵&#xff0c;每个矩阵是(3 * 4)大小。 首先说明一下axis的映…

C# —— 简单工厂设计模式详述

一、基本概念 众所周知&#xff0c;C#是一种面向对象的语言&#xff0c;而其中封装&#xff0c;继承&#xff0c;多态是面向对象的三大重要特征&#xff0c;简单工厂的设计模式则可以完全体现这些特征。要彻底理解这个模式&#xff0c;必须要先将封装&#xff08;访问修饰符的…

【计算机视觉】计算机视觉、模式识别、机器学习常用牛人主页链接

计算机视觉、模式识别、机器学习常用牛人主页链接 牛人主页&#xff08;主页有很多论文代码&#xff09; Serge Belongie at UC San DiegoAntonio Torralba at MITAlexei Ffros at CMUCe Liu at Microsoft Research New EnglandVittorio Ferrari at Univ.of EdinburghKristen G…

C# 中的 ConfigurationManager类引用方法

c#添加了Configuration;后&#xff0c;竟然找不到 ConfigurationManager 这个类&#xff0c;后来才发现&#xff1a;虽然引用了using System.Configuration;这个包&#xff0c;但是还是不行的。 后来终于找到一个解决方法&#xff0c;就是在解决方案资源管理器里找到类文件选择…

机器学习——支持向量机SVM之python实现简单实例一(含数据预处理、交叉验证、参数优化等)

目录 一、SVM理论 二、numpy的相关函数介绍 三、python实现之准备 1、数据集的下载

工业相机常用类型详述

一、工业相机定义 工业相机是应用于工业领域、安防和交通等对相机要求较高领域的摄像机&#xff0c;功能就是将光信号转变成有序的电信号&#xff0c;此信号经过模数转换为数字信号&#xff0c;然后传递给图像处理器。与一般的家用相机相比&#xff0c;其具有更高的稳定性能&a…

机器学习——SVM之python实现数据样本标准化和归一化

目录 一、标准化和归一化的目的 1、标准化 2、归一化 二、标准化和归一化常用的理论公式 1、归一化 2、标准化 三、python实现SVM样本数据标准化和归一化 1、标准化 2、归一化 本文源代码&#xff1a;《机器学习——支持向量机SVM之python实现简单实例一》 一、标准化…

[黑群晖经典教程] 一步一步建立自己的黑群晖

【申明&#xff1a;本文并非本人所作&#xff0c;为内部网络中一位大神所写&#xff0c;个人觉得写得很好&#xff0c;遂原文搬了过来&#xff0c;如有侵犯原作者的权利&#xff0c;请及时与我联系】 PS:有好几个兄弟觉得我擅自转发&#xff0c;不是很妥。解释一下&#xff1a;…

Java为什么能跨平台运行

因为java程序编译之后的代码不是能被硬件系统直接运行的代码&#xff0c;而是一种“中间码”--字节码。不同的硬件平台上装有不同的java虚拟机&#xff08;JVM&#xff09;&#xff0c;由JVM来把字节码再翻译成所对应的硬件平台能够执行的代码&#xff0c;因此java可以跨平台运…

C++和Opencv4.5 实现全景图像拼接

前言 最近刚下了最新版的opencv4.5&#xff0c;急不可待的试下操作&#xff0c;就用了opencv自带的Stitcher类拼接下图像&#xff0c;结果傻眼了&#xff0c;程序显示Stitcher没有createDefault成员&#xff0c;看了好久&#xff0c;终于找到了解决方法。 Stitcher原理 Stit…