Jupyter Notebook远程登录及自定义配置

简介

转载:Jupyter Notebook远程登录及自定义配置

背景

anaconda的Jupyter Notebook使用越来越普遍,但是默认形式的配置(默认目录,是否自动打开浏览器,端口等)未必是大家所适应的,本文即基于这样的问题,介绍Jupyter Notebook的自定义配置,以及如何远程登录Jupyter Notebook。

Jupyter Notebook自定义配置

类似于其他可以自定义配置的软件一样,Jupyter Notebook也有自己的配置文件,但是默认是不存在的,需要我们自己手动生成。我们可以使用以下命令生成配置文件。

1
2
3
# linux和mac系统打开终端
# windows系统打开anaconda自带的终端
jupyter notebook --generate-config

根据系统不同生成的文件所在位置也不同,mac和linux系统都在~/.jupyter目录下,windows也在当前用户目录下的.jupyter目录。名称为jupyter_notebook_config.py,几乎所有的配置都是在这一个文件中完成。

个性化配置

有了配置文件,我们就可以就可以进行个性化配置。使用编辑器打开配置文件,如果想要改变默认目录,在文件中搜索c.NotebookApp.notebook_dir,在后边填写你期望的默认目录。如果你想改变端口,搜索NotebookApp.port更改即可。注意,默认这些配置都是被注释掉的,你在更改后必须去掉这行前边的#符号。

设置Jupyter Notebook远程登录

有时候我们想让Jupyter Notebook运行在服务器上,但是我们又想在本机通过浏览器操作,如何实现呢?

首先,我们为远程的Jupyter Notebook创建密码,打开IDE或者命令行,输入如下命令:

1
2
3
4
5
6
from notebook.auth import passwd
passwd()
# 此时需要输入两次密码(一次设置,一次确认),然后生成sha1的密文,拷贝下来。
# Enter password: ········
# Verify password: ········
# sha1:b11ba7ae862e:6eeb922ef6b770e43a1c90922ba341faaaaaaaa

如果提示notebook模块不存在,那么使用conda install noteobok来安装。

输入passwd()后需要两次键入密码,之后会产生一段密文,复制这段密文(包含sha1:),找到下列行,修改配置文件如下:

1
2
3
4
c.NotebookApp.ip='*' # 允许所有ip访问
c.NotebookApp.password = u'sha1:...刚才复制的那个密文'
c.NotebookApp.open_browser = False # 是否打开浏览器
c.NotebookApp.port = 8888 #指定端口

之后,在服务器上使用jupyter notebook启动,然后本机通过http://address_of_remote:8888远程访问即可,登录界面需要输入设置的密码。

注意一定要确保端口是否打开,如果使用阿里云等服务,还要确保供应商的安全策略下端口是否打开,这块就不在本文讨论范围内啦,有问题可以留言。

一分一毛,也是心意。