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地址、端口号、密码、默认启动时不打开浏览器
设置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'
设定端口号,直接在启动jupyter命令中添加
--port n
参数,即jupyter notebook --port 8890
可使用8890访问,默认为8888端口。或者修改配置文件,设置默认启动端口。注意有”#”号要去掉”#”号才能使修改生效。c.NotebookApp.port = 8991
设定密码,这里需要借助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文件删除之后再修改配置文件,避免更改密码失败。
设置启动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
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 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" 转载请保留原文链接及作者。