作者:Slimmer
链接:https://zhuanlan.zhihu.com/p/25430471
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Pythoner如果用过Jupyter Notebook,那么他的好处应该都了然于胸了吧,至少你也知道曾经有ipython这么个东东,这里就不再啰嗦了,具体的好处请参考下面的知乎问题:为什么使用jupyter? - 计算机 - 知乎
这篇内容有一个基本前提就是,你觉得Jupyter Notebook挺好用或是不久的未来你想用Jupyter Notebook作为你的生产力工具。如果你觉得你手里的IDE比Jupyter Notebook更好用,那么我会告诉你我对你的习惯高度赞同并请关掉这篇内容!
实际上是将近一年以前,Jupyter Notebook 就已经支持另外一个非常重要的统计语言R的运行了,也就是说你有一个开挂的机会可以在Jupyter Notebook内同时完成Python、R再加上MarkDown,让R也能如Python在Jupyter Notebook中一样的好用!虽然你可能会觉得我言过其实但我总觉得这些溢美之词还并不够,显然尝试着让RStudio荣光退役吧(RStudio确实是一个不错的IDE,确实是...)。
当然更推荐的是Anaconda包含Jupyter Notebook一起安装,横跨Win、Linux和OS各平台,省心、简单的步骤很可能再次超乎想象,如果你是一个不爱在配置环境上折磨自己的人我深信你会惊呼这才是你想要的:
如果你还没有Jupyter Notebook(如果有请跳过):
推荐通过Anaconda安装集成的ptyhon、Jupyter Notebook环境,通过以下网址下载: Download Anaconda Now!
安装完毕后,就可以直接通过conda命令管理python包了(推荐使用conda代替pip管理各种package)!
使用以下命令可以启动Jupyter Notebook:
jupyter notebook
确认可以启动后,使用以下命令加载R到当前环境(一步代码完成):
conda install -c r r-essentials
使用Conda管理,安装 r-essentials常用包,并将该包配置在当前工作环境下
如果你想为R单独开辟新的环境空间,与现有工作环境区分开,那么使用以下命令代替上面的指令。(在Jupyter Notebook切换环境的方法,请参考相关内容,值得一提的是:Conda管理python2和py3共存就运用了这项技术):
conda create -n my-r-env -c r r-essentials
完成后,将是一个自动配置好“R essentials”的环境!包含了dplyr, shiny, ggplot2, tidyr,caret 和 nnet等等常用包。(可以通过 conda list查看)
如果需要安装新的拓展包,可以通过以下命令直接安装:
conda install package_name
而开始一个新的R环境,只需要运行Jupyter Notebook后选择“New -> R”即可!熟悉的界面加入了新的成员。
熟悉的环境,一切如此完美!希望有R的Jupyter Notebook能带给你不一样的工作体验。
更多问题可以参考Anaconda官方文档:Jupyter and conda for R
1. 建议安装完Anaconda后,添加清华大学的源,方便更新,代码如下:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
清华大学镜像站:Index of /anaconda/archive/
如果你不理解也没关系,反正就是以后更新更快了!
2. Jupyter 还有可以让你在同一个代码框,同时写python代码和R代码的方法,因为我没有需求就没有测试,如果你有需要可以参考下面的文章(第20条)
最好的方法事安装rpy2(需要一个可以工作的R),用pip操作很简单,详情参看:
Jupyter Notebook的27个窍门,技巧和快捷键
- 在探索的过程中参考了下面的专栏内容,非常感谢:
如何在云端服务器运行Jupyter Notebook? -> 知乎专栏
---
---
---
2017-04 本帖已经转移至:用R新选择,像Python一样优雅的用R! - 知乎专栏
本帖的问题已经尽量私信,新问题不再回复,如果还有问题请在新帖下留言探讨,谢谢!
编辑于 2017-06-28
5216 条评论收藏
分享
举报收起
Jupyter Notebook有哪些奇技淫巧?
Yulong Wang:也不算是奇技淫巧,主要是界面主题配置。 原生的jupyter notebook是这样婶的 如果只是看看还好,但是如...阅读全文
赞同 6414 条评论
豆豆
Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。—— Jupyter Notebook官方介绍
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
网页应用即基于网页形式的、结合了编写说明文档、数学公式、交互计算和其他富媒体形式的工具。简言之,网页应用是可以实现各种功能的工具。
即Jupyter Notebook中所有交互计算、编写说明文档、数学公式、图片以及其他富媒体形式的输入和输出,都是以文档的形式体现的。
这些文档是保存为后缀名为.ipynb
的JSON
格式文件,不仅便于版本控制,也方便与他人共享。
此外,文档还可以导出为:HTML、LaTeX、PDF等格式。
① 编程时具有语法高亮、缩进、tab补全的功能。
② 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
③ 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。
④ 对代码编写说明文档或语句时,支持Markdown语法。
⑤ 支持使用LaTeX编写数学性说明。
如果看了以上对Jupyter Notebook的介绍你还是拿不定主意究竟是否适合你,那么不要担心,你可以先免安装试用体验一下,戳这里,然后再做决定。
值得注意的是,官方提供的同时试用是有限的,如果你点击链接之后进入的页面如下图所示,那么不要着急,过会儿再试试看吧。
如果你足够幸运,那么你将看到如下界面,就可以开始体验啦。
安装Jupyter Notebook的前提是需要安装了Python(3.3版本及以上,或2.7版本)。
如果你是小白,那么建议你通过安装Anaconda来解决Jupyter Notebook的安装问题,因为Anaconda已经自动为你安装了Jupter Notebook及其他工具,还有python中超过180个科学包及其依赖项。
你可以通过进入Anaconda的官方下载页面自行选择下载;如果你对阅读英文文档感到头痛,或者对安装步骤一无所知,甚至也想快速了解一下什么是Anaconda,那么可以前往我的另一篇文章:
豆豆:Anaconda介绍、安装及使用教程zhuanlan.zhihu.com
你想要的,都在里面!
常规来说,安装了Anaconda发行版时已经自动为你安装了Jupyter Notebook的,但如果没有自动安装,那么就在终端(Linux或macOS的“终端”,Windows的“Anaconda Prompt”,以下均简称“终端”)中输入以下命令安装:
conda install jupyter notebook
如果你是有经验的Python玩家,想要尝试用pip命令来安装Jupyter
Notebook,那么请看以下步骤吧!接下来的命令都输入在终端当中的噢!
1. 把pip升级到最新版本
pip3 install --upgrade pip
pip install --upgrade pip
2. 安装Jupyter Notebook
pip3 install jupyter
pip install jupyter
如果你有任何jupyter notebook命令的疑问,可以考虑查看官方帮助文档,命令如下:
jupyter notebook --help
或
jupyter notebook -h
在终端中输入以下命令:
jupyter notebook
执行命令之后,在终端中将会显示一系列notebook的服务器信息,同时浏览器将会自动启动Jupyter Notebook。
启动过程中终端显示内容如下:
$ jupyter notebook
[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine
[I 08:58:24.417 NotebookApp] 0 active kernels
[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
浏览器地址栏中默认地将会显示:http://localhost:8888
。其中,“localhost”指的是本机,“8888”则是端口号。
如果你同时启动了多个Jupyter Notebook,由于默认端口“8888”被占用,因此地址栏中的数字将从“8888”起,每多启动一个Jupyter Notebook数字就加1,如“8889”、“8890”……
如果你想自定义端口号来启动Jupyter Notebook,可以在终端中输入以下命令:
jupyter notebook --port
其中,“jupyter notebook --port 9999
,即在端口号为“9999”的服务器启动Jupyter Notebook。
如果你只是想启动Jupyter Notebook的服务器但不打算立刻进入到主页面,那么就无需立刻启动浏览器。在终端中输入:
jupyter notebook --no-browser
此时,将会在终端显示启动的服务器信息,并在服务器启动之后,显示出打开浏览器页面的链接。当你需要启动浏览器页面时,只需要复制链接,并粘贴在浏览器的地址栏中,轻按回车变转到了你的Jupyter Notebook页面。
例图中由于在完成上面内容时我同时启动了多个Jupyter Notebook,因此显示我的“8888”端口号被占用,最终分配给我的是“8889”。
当执行完启动命令之后,浏览器将会进入到Notebook的主页面,如下图所示。
如果你的主页面里边的文件夹跟我的不同,或者你在疑惑为什么首次启动里边就已经有这么多文件夹,不要担心,这里边的文件夹全都是你的家目录里的目录文件。你可以在终端中执行以下2步来查看:
① cd
或 cd -
或 cd ~
或cd /Users/
② ls
如果你不想把今后在Jupyter Notebook中编写的所有文档都直接保存在家目录下,那你需要修改Jupyter Notebook的文件存放路径。
mkdir
;进入目录,命令为:cd
;查看目录的路径,命令为:pwd
;复制该路径。jupyter notebook --generate-config
常规的情况下,Windows和Linux/macOS的配置文件所在路径和配置文件名如下所述:
C:\Users\\.jupyter\
/Users//.jupyter/
或 ~/.jupyter/
jupyter_notebook_config.py
注意:
① “
② Windows和Linux/macOS系统的配置文件存放路径其实是相同的,只是系统不同,表现形式有所不同而已。
③ Windows和Linux/macOS系统的配置文件也是相同的。文件名以“.py”结尾,是Python的可执行文件。
④ 如果你不是通过一步到位的方式前往配置文件所在位置,而是一层一层进入文件夹/目录的,那么当你进入家目录后,用ls
命令会发现找不到“.jupyter”文件夹/目录。这是因为凡是以“.”开头的目录都是隐藏文件,你可以通过ls -a
命令查看当前位置下所有的隐藏文件。
打开终端,输入命令:
vim ~/.jupyter/jupyter_notebook_config.py
执行上述命令后便进入到配置文件当中了。
进入配置文件后查找关键词“c.NotebookApp.notebook_dir”。查找方法如下:
进入配置文件后不要按其他键,用英文半角直接输入/c.NotebookApp.notebook_dir
,这时搜索的关键词已在文档中高亮显示了,按回车,光标从底部切换到文档正文中被查找关键词的首字母。
按小写i进入编辑模式,底部出现“--INSERT--”说明成功进入编辑模式。使用方向键把光标定位在第二个单引号上(光标定位在哪个字符,就在这个字符前开始输入),把“⑴ 创建文件夹/目录”步骤中复制的路径粘贴在此处。
把该行行首的井号(#)删除。因为配置文件是Python的可执行文件,在Python中,井号(#)表示注释,即在编译过程中不会执行该行命令,所以为了使修改生效,需要删除井号(#)。
先按esc
键,从编辑模式退出,回到命令模式。
再用英文半角直接输入:wq
,回车即成功保存且退出了配置文件。
注意:
在终端中输入命令jupyter notebook
打开Jupyter Notebook,此时你会看到一个清爽的界面,恭喜!
此时你的界面当中应该还没有“Conda”和“Nbextensions”类目。不要着急,这两个类目将分别在“五、拓展功能”中的“1.关联Jupyter Notebook和conda的环境和包——‘nb_conda’”和“2.Markdown生成目录”中安装。
Files页面是用于管理和创建文件相关的类目。
对于现有的文件,可以通过勾选文件的方式,对选中文件进行复制、重命名、移动、下载、查看、编辑和删除的操作。
同时,也可以根据需要,在“New”下拉列表中选择想要创建文件的环境,进行创建“ipynb”格式的笔记本、“txt”格式的文档、终端或文件夹。如果你创建的环境没有在下拉列表中显示,那么你需要依次前往“五、拓展功能”中的“1.关联Jupyter Notebook和conda的环境和包——‘nb_conda’”和“六、增加内核——‘ipykernel’”中解决该问题。
上图展示的是笔记本的基本结构和功能。根据图中的注解已经可以解决绝大多数的使用问题了!
工具栏的使用如图中的注解一样直观,在此不过多解释。需要特别说明的是“单元格的状态”,有Code,Markdown,Heading,Raw NBconvert。其中,最常用的是前两个,分别是代码状态,Markdown编写状态。Jupyter Notebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而Raw NBconvert目前极少用到,此处也不做过多讲解。
菜单栏涵盖了笔记本的所有功能,即便是工具栏的功能,也都可以在菜单栏的类目里找到。然而,并不是所有功能都是常用的,比如Widgets,Navigate。Kernel类目的使用,主要是对内核的操作,比如中断、重启、连接、关闭、切换内核等,由于我们在创建笔记本时已经选择了内核,因此切换内核的操作便于我们在使用笔记本时切换到我们想要的内核环境中去。由于其他的功能相对比较常规,根据图中的注解来尝试使用笔记本的功能已经非常便捷,因此不再做详细讲解。
在使用笔记本时,可以直接在其内部进行重命名。在左上方“Jupyter”的图标旁有程序默认的标题“Untitled”,点击“Untitled”然后在弹出的对话框中输入自拟的标题,点击“Rename”即完成了重命名。
若在使用笔记本时忘记了重命名,且已经保存并退出至“Files”界面,则在“Files”界面勾选需要重命名的文件,点击“Rename”然后直接输入自拟的标题即可。
笔记本重命名演示图
Running页面主要展示的是当前正在运行当中的终端和“ipynb”格式的笔记本。若想要关闭已经打开的终端和“ipynb”格式的笔记本,仅仅关闭其页面是无法彻底退出程序的,需要在Running页面点击其对应的“Shutdown”。更多关闭方法可以查阅“八、关闭和退出”中的“1.关闭笔记本和终端”。
Running页面功能演示图
Clusters tab is now provided by IPython parallel. See ' IPython parallel' for
installation details.
Clusters类目现在已由IPython parallel对接,且由于现阶段使用频率较低,因此在此不做详细说明,想要了解更多可以访问IPython parallel的官方网站。
Conda页面主要是Jupyter Notebook与Conda关联之后对Conda环境和包进行直接操作和管理的页面工具。详细信息请直接查阅“五、拓展功能”中的“1.关联Jupyter Notebook和conda的环境和包——‘nb_conda’”。这是目前使用Jupyter Notebook的必备环节,因此请务必查阅。
Nbextensions页面提供了多个Jupyter Notebook的插件,使其功能更加强大。该页面中主要使用的插件有nb_conda,nb_present,Table of Contents(2)。这些功能我们无需完全掌握,也无需安装所有的扩展功能,根据本文档提供的学习思路,我们只需要安装Talbe of Contents(2)即可,该功能可为Markdown文档提供目录导航,便于我们编写文档。该安装指导请查阅“五、拓展功能”中的“2.Markdown生成目录”。
conda install nb_conda
执行上述命令能够将你conda创建的环境与Jupyter Notebook相关联,便于你在Jupyter Notebook的使用中,在不同的环境下创建笔记本进行工作。
canda remove nb_conda
执行上述命令即可卸载nb_conda包。
conda install -c conda-forge jupyter_contrib_nbextensions
在使用Markdown编辑文档时,难免会遇到需要在文中设定链接,定位在文档中的其他位置便于查看。因为Markdown可以完美的兼容html语法,因此这种功能可以通过html语法当中“a标签”的索引用法来实现。
语法格式如下:
[添加链接的正文](#自定义索引词)
跳转提示
注意:
)必有尾(
)”的原则。头尾之间的“跳转提示”是可有可无的。例:
有跳转提示语
无跳转提示语
想要在Jupyter Notebook中直接加载指定网站的源代码到笔记本中。
执行以下命令:
%load URL
其中,URL为指定网站的地址。
加载网络代码
想在Jupyter Notebook中加载本地的Python文件并执行文件代码。
执行以下命令:
%load Python文件的绝对路径
CTRL 回车
来执行命令。第一次执行,是将本地的Python文件内容加载到单元格内。此时,Jupyter Notebook会自动将“%load”命令注释掉(即在前边加井号“#”),以便在执行已加载的文件代码时不重复执行该命令;第二次执行,则是执行已加载文件的代码。加载本地Python文件
不想在Jupyter Notebook的单元格中加载本地Python文件,想要直接运行。
执行命令:
%run Python文件的绝对路径
或
!python3 Python文件的绝对路径
或
!python Python文件的绝对路径
!shell命令
语法的使用,即在Jupyter Notebook中执行shell命令的语法。control return
来执行命令,执行过程中将不显示本地Python文件的内容,直接显示运行结果。运行本地Python文件
想要在Jupyter Notebook中获取当前所在位置的绝对路径。
%pwd
或
!pwd
!shell命令
语法的使用,即在Jupyter获取当前位置的绝对路径
!shell命令
Shell命令的使用
在Jupyter Notebook主界面,即“File”界面中点击“New”;在“New”下拉框中点击“Terminal”即新建了终端。此时终端位置是在你的家目录,可以通过pwd
命令查询当前所在位置的绝对路径。
在Jupyter Notebook的“Running”界面中的“Terminals”类目中可以看到正在运行的终端,点击后边的“Shutdown”即可关闭终端。
笔记本中的终端使用
在Jupyter Notebook的笔记本中无论是编写文档还是编程,都有输入(In [])和输出(Out [])。当我们编写的代码或文档使用的单元格较多时,有时我们只想关注输出的内容而暂时不看输入的内容,这时就需要隐藏输入单元格而只显示输出单元格。
from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di # Example: di.display_html('%s:
' % str, raw=True)
# 这行代码的作用是:当文档作为HTML格式输出时,将会默认隐藏输入单元格。
di.display_html('', raw=True)
# 这行代码将会添加“Toggle code”按钮来切换“隐藏/显示”输入单元格。
di.display_html('''''', raw=True)
在笔记本第一个单元格中输入以上代码,然后执行,即可在该文档中使用“隐藏/显示”输入单元格功能。
方法一:隐藏/显示输入单元格
from IPython.display import HTML
HTML('''
''')
在笔记本第一个单元格中输入以上代码,然后执行,即可在该文档中使用“隐藏/显示”输入单元格功能。
方法二:隐藏/显示输入单元格
由于目前暂时用不到过多的魔术命令,因此暂时先参考官网的文档。
接下来将分别用“命令行模式”和“图形界面模式”来解决以上两个场景的问题。顾名思义,“命令行模式”即在终端中通过执行命令来一步步解决问题;“图形界面模式”则是通过在Jupyter Notebook的网页中通过鼠标点击的方式解决上述问题。
其中,“图形界面模式”的解决方法相对比较简单快捷,如果对于急于解决问题,不需要知道运行原理的朋友,可以直接进入“3. 解决方法之图形界面模式”来阅读。
“命令行模式”看似比较复杂,且又划分了使用场景,但通过这种方式来解决问题可以更好的了解其中的工作原理,比如,每进行一步操作对应的命令是什么,而命令的执行是为了达到什么样的目的,这些可能都被封装在图形界面上的一个点击动作来完成了。对于想更深入了解其运作过程的朋友,可以接着向下阅读。
python2 -m pip install ipykernel
python2 -m ipykernel install --user
conda create -n python=2 ipykernel
Windows: activate
Linux/macOS: source activate
python2 -m ipykernel install --user
python3 -m pip install ipykernel
python3 -m ipykernel install --user
conda create -n python=3 ipykernel
Windows: activate
Linux/macOS: source activate
python3 -m ipykernel install --user
Windows: activate
Linux/macOS: source activate
conda list
执行上述命令查看当前环境下安装的包,若没有安装ipykernel包,则执行安装命令;否则进行下一步。
conda install ipykernel
python2 -m ipykernel install --user --name --display-name ""
python3 -m ipykernel install --user --name --display-name ""
1. “
2. “
3. “--name”参数的值,即“~/Library/Jupyter/kernels/
。如果定义的名称在该路径已经存在,那么将自动覆盖该名称目录的内容。
4. “--display-name”参数的值是显示在Jupyter Notebook的菜单中的名称。
使用命令jupyter notebook
启动Jupyter Notebook;在“Files”下的“New”下拉框中即可找到你在第⑶步中的自定义名称,此时,你便可以尽情地在Jupyter Notebook中切换环境,在不同的环境中创建笔记本进行工作和学习啦!
① 你创建了一个新的环境,但却发现在Jupyter Notebook的“New”中找不到这个环境,无法在该环境中创建笔记本。
问题发现
② 进入Jupyter Notebook → Conda → 在“Conda
environment”中点击你要添加ipykernel包的环境 → 左下方搜索框输入“ipykernel”
→ 勾选“ipykernel” → 点击搜索框旁的“→”箭头 → 安装完毕 → 右下方框内找到“ipykernel”说明已经安装成功
解决方法
③ 在终端control c
关闭Jupyter Notebook的服务器然后重启Jupyter Notebook,在“File”的“New”的下拉列表里就可以找到你的环境啦。
验证
esc
键进入命令模式。enter
或return
键进入编辑模式。① 进入Jupyter Notebook主界面“File”中。
② 在“New”的下拉列表中选择环境创建一个笔记本。
③ 点击“Help”。
④ 点击“Keyboard Shortcuts”。
① 进入Jupyter Notebook主界面“File”中。
② 在“New”的下拉列表中选择环境创建一个笔记本。
③ 点击“Help”。
④ 点击“Keyboard Shortcuts”。
⑤ 弹出的对话框中“Command Mode (press Esc to enable)”旁点击“Edit
Shortcuts”按钮。
① 进入Jupyter Notebook主界面“File”中。
② 在“New”的下拉列表中选择环境创建一个笔记本。
③ 点击“Help”。
④ 点击“Edit Keyboard Shortcuts”。
查看和编辑快捷键
当我们在Jupyter Notebook中创建了终端或笔记本时,将会弹出新的窗口来运行终端或笔记本。当我们使用完毕想要退出终端或笔记本时,仅仅关闭页面是无法结束程序运行的,因此我们需要通过以下步骤将其完全关闭。
⑴ 进入“Files”页面。
⑵ 勾选想要关闭的“ipynb”笔记本。正在运行的笔记本其图标为绿色,且后边标有“Running”的字样;已经关闭的笔记本其图标为灰色。
⑶ 点击上方的黄色的“Shutdown”按钮。
⑷ 成功关闭笔记本。
⑴ 进入“Running”页面。
⑵ 第一栏是“Terminals”,即所有正在运行的终端均会在此显示;第二栏是“Notebooks”,即所有正在运行的“ipynb”笔记本均会在此显示。
⑶ 点击想要关闭的终端或笔记本后黄色“Shutdown”按钮。
⑷ 成功关闭终端或笔记本。
⑴ 只有“ipynb”笔记本和终端需要通过上述方法才能使其结束运行。
⑵
“txt”文档,即“New”下拉列表中的“Text
File”,以及“Folder”只要关闭程序运行的页面即结束运行,无需通过上述步骤关闭。
关闭笔记本或终端程序
如果你想退出Jupyter Notebook程序,仅仅通过关闭网页是无法退出的,因为当你打开Jupyter Notebook时,其实是启动了它的服务器。
你可以尝试关闭页面,并打开新的浏览器页面,把之前的地址输进地址栏,然后跳转页面,你会发现再次进入了刚才“关闭”的Jupyter Notebook页面。
如果你忘记了刚才关闭的页面地址,可以在启动Jupyter Notebook的终端中找到地址,复制并粘贴至新的浏览器页面的地址栏,会发现同样能够进入刚才关闭的页面。
因此,想要彻底退出Jupyter Notebook,需要关闭它的服务器。只需要在它启动的终端上按:
control c
ctrl c
然后在终端上会提示:“Shutdown this notebook server (y/[n])?”输入y
即可关闭服务器,这才是彻底退出了Jupyter Notebook程序。此时,如果你想要通过输入刚才关闭网页的网址进行访问Jupyter Notebook便会看到报错页面。