jupyter的基本使用

前言

使用anaconda安装python,不得不使用的就是jupyter notebook。jupyter是以网页形式打开,可以在网页中直接编写和运行代码,运行的结果也可以在代码块下方显示,并且可以使用markdown语言进行标记,可以远程搭建jupyter服务,使用电脑或者移动设备就能进行远程开发。除此之外还用众多一般IDE不具备且非常使用的功能。那么本篇博客便从一个新手角度讲述如何流畅使用jupyter。

本文章中使用的软件版本

本文的环境使用Miniconda3-4.7.12.1-Windows-x86_64进行安装,linux平台操作类似,文章中尽量考虑linux平台差异带来的问题,若不全之处可使用搜索引擎解决问题。

  • python 3.7.4 Ps:miniconda自带的python版本。
  • python 3.6.10 Ps:虚拟环境中的pythhon环境,考虑到较新的python版本需要tensorflow不稳定,因此选择相对较低的版本。,
  • jupyter-notebook 6.0.1(最新版)
  • jupyter core 4.6.3(最新版)
  • ipython 7.8.0(最新版)

这里建议不使用最新的软件,可能有的包不支持最新的版本,也不要使用太老旧的版本,老版本可能不兼容新版本依赖库,需要查找合适的版本进行安装。后面的jupyter默认表示jupyter notebook。

安装

jupyter安装

在windows平台下,如果使用python官网的程序进行安装,在成功构建python环境后,使用pip安装jupyter notebook库pip install jupyter -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/,确认即可安装。这里使用国内的pip源(https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/)进行安装。如果使用miniconda安装python,可以使用conda install jupyter安装jupyter,如果安装速度过慢,推荐换源安装,参考文章anaconda换源。如果是使用anaconda安装python,那么anaconda默认安装jupyter,不用再次安装jupyter。

安装额外插件

为了更加方便使用jupyter,建议安装插件nbconda和nbextensions

# conda安装nb_conda和nbextensions
conda install nb_conda
conda install jupyter_contrib_nbextensions        # 或者使用pip install jupyter_contrib_nbextensions安装
jupyter contrib nbextension install

安装插件之后可能出现当前插件不兼容当前的软件版本,可以将”disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development)”这个选项去掉,即可使用。

插件详解

  • (some) LaTeX environments for Jupyter,在单元内支持LaTex;
  • AutoSave Time,可以设置自动保存时间;
  • Code prettify,使用内核特定的代码美化单元格代码;
  • Collapsible Headings,可折叠标题;
  • Equation Auto Numbering,等式自动标号;
  • Exercise2,将一组单元格定义为”联系”,其他的单元格是答案,通过单击问题单元的小部件可以隐藏/显示解决方案;
  • Highlight selected word,高亮选词;
  • isort formatter,使用isort对python导入的文件排序;
  • Limit Output,对单元的输出进行限制,太长的直接隐藏;
  • Navigation-Hotkeys,使用额外的热键便于在notebook里边导航;
  • Notify,核心运行代码完成进行提醒;
  • ScrollDown,输出自动往下滚动;
  • Table of Contents,将单元中的标题集中显示;
  • Variable Inspector,显示定义的变量;
  • 2to3 Converter,将python2转化为python3;
  • codefolding,折叠代码,包括函数、循环和条件等结构折叠;
  • ExecuteTime,显示代码开始运行时间和总共运行时间;
  • snippets menu,可以使用常用的一些编程功能,如numpy中新建一个矩阵;
  • Codefolding in Editor,代码折叠,与codefolding功能相似;
  • Freezen,冻结单元,不能编辑;
  • Hide input,隐藏输入单元;
  • Hinterland,语法提示;
  • runtools,有关运行的小工具;
  • code font size,可以调整代码字体大小;
  • Scratchpad,草稿单元,可以在其中做一些小测试;

这里推荐使用Collapsible Headings、Table of Contents、codefolding、executetime、snippets menu、hinterland这几个插件。

启动jupyter

  • 终端环境里运行jupyter notebook即可运行jupyter。默认的路径为当前运行启动命令所在的文件夹。

配置jupyter

生成默认配置文件

运行命令生成配置文件,windows下配置文件位置为C:\Users\当前用户\.jupyter\jupyter_notebook_config.py,Linux系统下配置文件位置为~/.jupyter/jupyter_notebook_config.py。

jupyter notebook --generate-config

注意修改其中配置项时,注意是否使用”#”符号对该行进行了注释,如果被注释掉了,需要去掉“#”符号才能使配置生效。

设置jupyter默认路径

每次启动都需要cd到想要工作目录,比较麻烦,可以在配置文件中设置默认工作路径,默认打开jupyter的工作目录。

c.NotebookApp.notebook_dir = u'默认工作路径'

设置jupyter远程访问ip地址、端口号、密码、默认启动时不打开浏览器

  1. 设置IP地址,直接在启动jupyter命令中添加--ip xxx.xxx.xxx.xxx参数,即jupyter notebook --ip 127.0.0.1可使用127.0.0.1访问服务。或者修改配置文件,设定启动时的ip地址,当然该ip设置也可以设置为域名。注意有”#”号要去掉”#”号才能使修改生效。

     c.NotebookApp.ip = '127.0.0.1'
  1. 设定端口号,直接在启动jupyter命令中添加--port n参数,即jupyter notebook --port 8890可使用8890访问,默认为8888端口。或者修改配置文件,设置默认启动端口。注意有”#”号要去掉”#”号才能使修改生效。

     c.NotebookApp.port = 8991
  2. 设定密码,这里需要借助jupyter的工具进行对密码进行加密形成密文。使用jupyter notebook password输入两次密码,即可生成密文,在windows中存储于C:\Users\用户\.jupyter\jupyter_notebook_config.json中。Linux中放置在~/.jupyter\jupyter_notebook_config.json中,文件内容如下:

    {
      "NotebookApp": {
        "password": "sha1:32c1e756f3df:43eaefea21f9e25c9f556e1c22cf3da565e9d165"
      }
    }

    上面的方法设置之后不用再到配置文件中修改,还有另外一种修改密码的方式,在虚拟环境里使用ipython,进入交互界面,输入from notebook.auth import passwd回车之后输入passwd()回车,输入两次密码并回车,就会输出一串sha1开头的字符串将sha1开头双引号内全部字符串全部拷贝,填入配置文件中对应位置:

    c.NotebookApp.password = u'sha1:fbf4296e978d:3d4c173f027c8e5b85655177856c77d1f1ea44a6'

    需要注意,jupyter_notebook_config.json设置密码的优先级高于配置文件,所以使用第一种方法设置密码之后,配置文件中就不要设置密码了(应该使用”#”符号注释掉),避免报错。如果在配置文件设置密码,一定要将jupyter_notebook_config.json文件删除之后再修改配置文件,避免更改密码失败。

  3. 设置启动jupyter时默认不打开浏览器

    在启动代码中添加--no-browser或者修改配置文件。

    c.NotebookApp.open_browser = False

设置inline显示

这个设置主要是针对matplotlib之类的需要绘图的程序,使图显示在网页上。

c.NotebookApp.pylab = "inline"

在最新的jupyter上已废弃这样的设置方式,采用%pylab inline或者%matplotlib inline进行设置

jupyter简单使用

新建ipynb

进入到存储文件夹之后,New->Python3即可新建ipynb文件。

导入代码

在jupyter中代码都是依托于ipynb,如果之前的代码存在于py文件中,那么需要将代码导入ipynb文件中。

%load py文件路径

或者直接运行py文件

%run py文件路径

新建python环境

  • 运行命令conda create -n 环境名 python=3新建环境,关于python环境管理,参考文章python环境管理
  • 激活环境conda activate 环境名
  • 在虚拟环境内安装nb_conda和ipykernel,命令conda install nb_conda ipykernel
  • 将虚拟环境注册到jupyter中,命令python -m ipykernel install --user --name 环境名 --display-name jupyter中显示名(可修改),在windows下使用这条命令注册之后在jupyter中无法使用环境,但是默认会设置成”Python [conda env:环境名]”,这个环境可以直接使用;在Linux系统下则必须要进行注册,否则jupyter不会显示该虚拟环境。
  • 启动jupyter即可看到新添加的python环境。

jupyter快捷键

jupyter有两种模式,命令模式和编辑模式。进入命令模式的方式:按Esc键即可进入命令模式,单元边框线为蓝色;进入编辑模式的方式:左键双击单元的文本框即可进入编辑模式,单元边框线为绿色。

命令模式下

  • Enter:进入编辑模式;
  • Shift-Enter:运行本单元,选中下一单元,没有则新建单元;
  • Ctrl-Enter:运行本单元;
  • Alt-Enter:运行本单元,下新建一个单元;
  • Y:单元转代码状态;
  • M:单元转入markdown状态;
  • R:单元转入raw状态;
  • 1:设定为1级标题;
  • 2:设定为2级标题;
  • 3:设定为3级标题;
  • 4:设定为4级标题;
  • 5:设定为5级标题;
  • 6:设定为6级标题;
  • Up:选中上方单元;
  • K:选中上方单元;
  • Shift-K:扩大选中上方单元;
  • Down:选中下方单元;
  • J:选中下方单元;
  • Shift-J:扩大选中下方单元;
  • A:在上方插入新单元;
  • B:在下方插入新单元;
  • X:剪切选择的代码块;
  • C:复制选择的代码块;
  • Shift-V:粘贴到上面;
  • V:粘贴到下面;
  • Z:撤销删除;
  • D·D(按两次D):删除所选中单元;
  • Shift-M:合并选中单元格,如果只有一个单元格被选中,合并下一个单元;
  • Ctrl-S:保存并检查;
  • S:保存并检查;
  • L:切换是否显示行号;
  • O:选择单元格输出;
  • Shift-O:切换选中单元的输出滚动;
  • H:显示快捷键;
  • I·I(按两次I):中断服务;
  • Esc:关闭页面;
  • Q:关闭页面
  • Shift-L:在所有单元格中切换行号,并保持设置;
  • Shift-空格:向上滚动;
  • 空格:向下滚动;

编辑模式下

  • Tab:代码完成或缩进;
  • Shift-Tab:工具提示;
  • Crtl-]:缩进;
  • Ctrl-[:取消缩进;
  • Ctrl-A:全选;
  • Ctrl-Z:撤销;
  • Ctrl-/:注释或取消注释;
  • Ctrl-D:删除整行;
  • Ctrl-U:撤销选择;
  • Insert:切换重写标志;
  • Ctrl-Home:转跳到单元格起始处;
  • Ctrl-上:转跳到单元格起始处;
  • Ctrl-End:转跳到单元格最后;
  • Ctrl-下:转跳到单元格最后;
  • Ctrl-左:转跳到单词左边;
  • Ctrl-右:转跳到单词右边;
  • Ctrl-删除:删除前面的单词;
  • Ctrl-del:删除后面的单词;
  • Ctrl-Y:重做;
  • Alt-U:重新选择;
  • Ctrl-B:打开草稿面板(安装响应的插件Scratchpad)
  • Ctrl-Enter:运行当前单元;
  • Shift-Enter:运行当前单元,选中下一单元,没有则新建;
  • Ctrl-M:进入命令行模式;
  • Ctrl-Shift-F:打开命令配置;
  • Ctrl-Shift-P:打开命令配置;
  • Esc:进入命令模式;
  • Alt-Enter:运行单元并下插入新单元;
  • Ctrl-Shift-Minus:在鼠标处分割代码
  • Ctrl-S:保存并检查;
  • 上:光标上移或者上一单元;
  • 下:光标下移或者下一单元;

jupyter的魔术命令

行魔术命令

魔术命令 含义 例子
! 执行命令行命令 !jupyter kernelspec list
? 说明手册,可能会有用例 ?%pwd
%lsmagic 显示全部可用的魔术指令 %lsmagic
%matplotlib inline 图片嵌入窗口,而不是单独显示 %matplotlib inline
%time 测试当前行代码运行时间 %%time
%time 当前行运行时间 %time a = list(i for i in range(100000))
%timeit 使用python的timeit库测试当前代码行运行100000次所花时间 %timeit b = list(i for i in range(100000))
%prun 每个函数消耗时间 %prun time.sleep(1)
%run 运行一个py文件 %run test1.py
%pwd 查看当前路径 %pwd
%cd 更改当前路径 %cd .
%who 列举所有全局变量,+类型可过滤 %who int
%whos 列举所有变量、类型和信息 %whos
%who_ls 使用列表列出所有变量列表 %who_ls
%reset 清除所有变量 %reset
%load 加载一个文件的内容 %load test.py
%load_ext 导入外部模块 %load_ext autoreload
%reload_ext 重新导入外部模块 %reload_ext autoreload
%unload_ext 卸载ipython拓展模块 %unload_ext autoreload
%system 快速检查当前目录和类似的东西 %system
%automagic 是否带%,off(0)/on(1) %automagic on
%debug 调试 %debug
%quickref 调出快速参考 %quickref
%magic 显示魔术命令帮助 %magic
%dhist 打印历史访问记录 %dhist
%hist 打印所有历史记录,包括魔术命令、指令等等 %hist
%pdb 控制交互式调试器的自动调用 %pdb
%page 用一页进行打印 %page
%xdel 删除、清除一切引用 %xdel a
%connect_info 查看连接信息
%echo 向标准输出中打印字符串
%env 获取环境变量,并且可以进行设置 %env OS="123"
%less、%more 显示一个文件内容,文件名结尾为.py会语法高亮显示 %less test.py
%pinfo、%pinfo2 查看一个object的详细信息 %pinfo a
%pip 调用pip,可以通过这个指令安装或者查看包 %pip install numpy%pip list
%conda 调用conda(windows使用会有问题,linux使用正常),安装包之类的操作 %conda install numpy
%popd、%pushd 通过入栈出栈改变当前工作目录 %pushd ..%popd
%pprint 改变当前工作目录是否打印出来 %pprint
%precision 设置当前打印浮点的精度 %precision 3保留3位小数;%precision恢复默认设置
%psearch 在当前命名空间使用通配符搜索object %psearch t*
%pycat 使用分页语法高亮打印文件 %pycat test.py
%pylab 与numpy和matplotlib交互 %pylab inline
%save 保存几行或者一个宏到文件中 %save test2.py 2
%sc 命令捕获-运行shell命令并捕获输出 %sc -l print1=echo 123
%store 轻量级持久性变量 %store a
%sx 命令执行 %sx echo 123
%tb 打印最后的traceback %tb
%alias 别名 %alias ppp echo 123调用使用%ppp
%unalias 取消别名 %unalias ppp
%macro %macro ppp 3-5
%xmode 异常处理模式,模式有三种Plain, Context, Verbose, and Minima,默认为Context %xmode

注意:设置autoreload 1时需要使用%aimport指定需要重新载入的库,如aimport numpy;如果设置autoreload 2则不需要使用%aimport进行指定。

单元魔术命令

魔术命令 含义 例子
%%! 这个单元都是命令行执行指令
%%html 注明该单元格内为html代码
%%svg 注明当前单元格内为svg代码
%%cmd、%%bash windows下使用%%cmd,linux下使用%%bash,可执行命令行代码
%%debug 调试整个单元格
%%file、%%writefile 保存整个单元格内容到文件 %%writefile 文件名
%%javascript、%%js、%%latex、%%markdown、%%perl、%%pypy、%%python、%%python2、%%python3、%%ruby、%%sh 指定语言格式
%%sx 与%sx功能相同
%%time 整个cell运行所花费的时间
%%timeit 功能与%timeit相同

资料参考

https://blog.csdn.net/Detective_0/article/details/106166368

https://segmentfault.com/a/1190000010758722

https://www.jianshu.com/p/9768a61e1bb7


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qinzhtao@163.com

文章标题:jupyter的基本使用

文章字数:3.7k

本文作者:捌叁壹伍

发布时间:2020-06-06, 00:02:37

最后更新:2020-06-11, 18:04:51

原始链接:http://qzt8315.github.io/2020/06/06/jupyter的基本使用/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏