说到Jupyter Notebook(以下简称Jupyter),想必很多人都不陌生,这是一款神奇的web应用,权且可以把它当作python超级笔记本,当然它还支持R、Julia、Scala、Js等几十种语言。
在Jupyter上,可以使用python做数据处理、统计建模、可视化、机器学习、教学演示、网页抓取等各种各样的事情,只有你想不到,没有它做不到。而且,你有可能只用了不到5%的Jupyter功能,它的宝藏工具实在太多。

本文不是来介绍Jupyter的那些神奇用法,而是想实实在在地为Jupyter初学者解决一些头疼的问题。安装Jupyter后,有些人会纠结:
- 怎么才能更改默认目录、默认浏览器?
- 怎么设置登录密码?
- 如何使用Jupyter插件?
- notebook样式又如何更换?
这些都会一一讲到,但首先要提一下配置文件,这个很重要。
什么是Jupyter配置文件?
配置文件,顾名思义就是可以修改Jupyter各种配置的文件。想要修改Jupyter那些默认的配置选项,就需要在配置文件jupyter_notebook_config.py中修改相应配置选项的属性。
这个配置文件一开始并不存在,需要手动生成。方式很简单,在命令行输入jupyter notebook --generate-config并执行,配置文件就创建好了,它的位置是在C:\Users\Administrator\.jupyter\中。

然后我们去c盘主目录下打开.jupyter文件夹,就能找到配置文件:
- jupyter_notebook_config.py

配置文件是关键,后面都要用到的。
1. 更改默认工作目录
一般情况下,Jupyter的默认工作目录为C:\Users\Administrator\,这样很不清爽,而且不便于管理项目,所以常需要在其他盘建立一个独立的Jupyter工作目录文件。

前面提到配置文件jupyter_notebook_config.py,工作目录就在这个里面修改。
- 用记事本打开配置文件jupyter_notebook_config.py;
- Crtl + F组合键找到c.NotebookApp.notebook_dir元素,删掉前面的注释#;
- 在后面的单引号里输入要设置的目录路径(注意双斜杠),保存关闭;例如:
- c.NotebookApp.notebook_dir = "E:\\jupyter_notebook"
经过这四个步骤,工作目录就修改好了,这时候不管你是通过快捷键还是命令行进入Jupyter Notebook,都能看到最新设置的目录,干净清爽。

2. 更改默认浏览器
很多小伙伴有自己的浏览器偏好,希望Jupyter运行在经常使用的那个浏览器上。
更改Jupyter默认浏览器也比较简单,以设置chrome浏览器为例:
(1) 找到chrome.exe文件的安装路径,复制该路径。
例如:u'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
查找方式?右键chorme图标,打开文件所在位置,如下图:

(2) 用记事本打开配置文件jupyter_notebook_config.py;
(3) Crtl + F组合键找到c.NotebookApp.browser元素;
(4) 在找到记录的下方添加以下代码(注意替换为你的chrome.exe路径):
- import webbrowser
- webbrowser.register('chrome', None, webbrowser.GenericBrowser(u'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'))
- c.NotebookApp.browser = 'chrome'
保存文件。这样就大功告成了,重新启动Jupyter,就会在新设定的浏览器上运行。
3. 设置登录密码
假如你对自己的Jupyter目录很敏感,不想让别人轻易使用,那么可以设置登录密码。步骤如下:
- 用记事本打开配置文件jupyter_notebook_config.py;
- Crtl + F组合键找到c.NotebookApp.allow_password_change元素,修改为:NotebookApp.allow_password_change=False,并且删掉前面的注释#,保存文件;
- 回到windows命令行,运行jupyter notebook password,按照提示输入新密码(注意这里的密码是不显示的);

- 可以看到上一步生成了一个json文件,保存在.jupyter文件夹里,和配置文件一个位置。这个json文件保存了密码生成的一段哈希值。找到该文件并打开,复制这段哈希值。
- 再一次打开配置文件jupyter_notebook_config.py;
- Crtl + F组合键找到c.NotebookApp.password元素,将前面的哈希值添加到后面,并且删掉前面的注释#,保存文件;示例:
- c.NotebookApp.password = u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
4. 安装扩展插件
Jupyter让很多人喜欢的原因在于它提供了丰富的插件,包括显示代码执行时间、生成目录、显示变量名、代码块折叠等各种让你舒适的功能。
使用插件前,必须要安装扩展nbextensions。
全程在命令行安装,步骤如下:
- 安装nbextensions,执行pip install jupyter_contrib_nbextensions;
- 安装javascript and css files,执行jupyter contrib nbextension install --user;
- 安装configurator,执行pip install jupyter_nbextensions_configurator
- 重启 Jupyter Notebook, 能看到nbextension 标签

5. 修改notebook样式
notebook自带的样式已经可以满足日常使用需求了,如果想把notebook改造成自己喜欢的风格,也是很好实现的。
全程在命令行执行,步骤如下:
- 安装主题样式工具包:pip install jupyterthemes;
- 查看可用主题:jt -l;
- 切换主题(切换为chesterish主题):jt -t chesterish;
- 恢复默认主题:jt -r;
- 其他还有许多功能,可以改字体、样式、宽度、占屏比等。
展示下网友尝试的各种样式:
chesterish

grade3

gruvboxd

gruvboxl

monokai
oceans16

onedork

solarizedd

solarizedl

总结
再说一遍,Jupyter是个神奇的工具,生产力与趣味性兼具,实用与美观并存。用好它,python会更加大放异彩的。