Jupyter Notebook 安装配置与使用详解

(编辑:jimmy 日期: 2024/12/27 浏览:2)

本文示例环境:CentOS 7,远程服务器
可能的依赖:python; pip; python-devel; gcc; gcc-c++;

一、安装(命令行操作) 如果没有pip,要安装pip:

安装 setuptools

cd /tmp
wget https://pypi.python.org/packages/69/56/f0f52281b5175e3d9ca8623dadbc3b684e66350ea9e0006736194b265e99/setuptools-38.2.4.zip#md5=e8e05d4f8162c9341e1089c80f742f64  # 具体下载地址可能变更,请参见官网:https://pypi.python.org/pypi/setuptools#downloads
unzip setuptools-38.2.4.zip # 我下载的是 .zip 源码,所以用 unzip 解压
cd setuptools-38.2.4/
python setup.py install

再安装 pip

cd /tmp
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9  # 同样,具体下载地址参考:https://pypi.python.org/pypi/pip#downloads
tar zxvf pip-9.0.1.tar.gz # 解压
cd pip-9.0.1/
python setup.py install

安装 jupyter notebook

如果想用 python2:

python -m pip install --upgrade pip
python -m pip install jupyter

如果报错:

………………………………
error: command 'gcc' failed with exit status 1

试试:

sudo yum install gcc gcc-c++ python-devel

再运行

如果想用 python3:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

安装完测试一下好不好用:

若jupyter 部署在远程服务器上,服务器防火墙开启时,端口可能不能访问,所以加一步端口开放

firewall-cmd --zone=public --add-port=8888/tcp --permanent
success  
systemctl restart firewalld.service 

注意:如果是腾讯云等云服务器,可能需要上官网管理平台,手动配置安全组开放端口才行
然后启动 jupyter

jupyter notebook --ip=*  # root下换成:jupyter notebook --ip=* --allow-root

命令行显示:

Jupyter Notebook 安装配置与使用详解

打开浏览器,输入url: localhost:8888,回车,浏览器显示:
注意:在远程服务器上部署jupyter的要把 localhost 改成对应的 ip 地址

Jupyter Notebook 安装配置与使用详解

让你用token登录,把上面命令行反馈的 token (倒数第二行)复制过来输入,登录成功:

Jupyter Notebook 安装配置与使用详解

二、配置

上述步骤创建的 jupyter notebook 是临时性的,没有配置密码、SSL、工作目录等等,不方便也不安全。下面为需要的用户建立专属的配置。

注意:下文中的例子在 root 账户下进行,建议实际不要用 root 用户。

配置文件生成

如果服务器上你的账户下已有默认 jupyter 用户(的配置文件),可以直接拷贝一份,改个名字,比如:

cd /root/.jupyter
cp jupyter_notebook_config.py jupyter_my_config.py

或者,直接自己找个任意目录,比如 /root/my_configs,直接创建一个新文件作为配置文件(反正就是个文本文件,放哪里都行):

mkdir /root/my_configs
cd /root/my_configs
touch jupyter_notebook_config.py

再或者,账户下未建立默认 jupyter 配置文件的情况下,可以自动生成:

jupyter notebook --generate-config

Jupyter Notebook 安装配置与使用详解 

现在假设我们的配置文件是用最后一种方式创建的,我们进入目录看看

[root@VM_157_11_centos ~]# cd /root/.jupyter/
[root@VM_157_11_centos .jupyter]# ls
jupyter_notebook_config.py
[root@VM_157_11_centos .jupyter]# 

配置文件编辑

打开 jupyter_notebook_config.py 文件:

vim jupyter_notebook_config.py

可以看到全是注释的配置说明,比较复杂,也不是都用得上,这里我们自己写一些重要的配置即可,在文件开头写入:

c = get_config()
c.IPKernelApp.pylab = "inline"
c.NotebookApp.ip = "*"
c.NotebookAPp.open_browser = False
c.NotebookApp.password = 'sha1:b39d2445079f:9b9ab99f65150e113265cb99a841a6403aa52647'
c.NotebookApp.certfile = u'/root/.jupyter/mycert.pem'
c.NotebookApp.port= 8888
c.NotebookApp.notebook_dir = "/root/ipython"

注意1:第五行 password 填入的是<登录密码的 sha1 加密版>,通过以下方式生成:

[root@VM_157_11_centos .jupyter]# python
Python 2.7.5 (default, Aug 4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
> from IPython.lib import passwd
> passwd()
Enter password: 
Verify password: 
'sha1:175e8efe8974:eacef02a2e3f959d6efdf6c93d142c7f4712f5cc'
> exit()
[root@VM_157_11_centos .jupyter]# 

注意2:第六行的 certfile 证书文件可以通过下面这行命令生成(中间的交互信息可以随便填),注意路径要对应上:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

注意3:第七行的 port 应该是一个未被占用的、被防火墙允许的端口(在上面的步骤我们已经打开了 8888 端口),这里再强调一遍(同样的,腾讯云等服务器需要在官网修改安全策略):

firewall-cmd --zone=public --add-port=8888/tcp --permanent
success  # 系统反馈信息
systemctl restart firewalld.service 

注意4:第八行的 notebook_dir 是你的文档目录,需要自行选择并创建(否则运行时会报错):

mkdir /root/ipython

运行

[root@VM_157_11_centos .jupyter]# jupyter notebook --config jupyter_notebook_config.py --allow-root
[I 19:58:54.278 NotebookApp] Serving notebooks from local directory: /root/ipython
[I 19:58:54.279 NotebookApp] 0 active kernels
[I 19:58:54.279 NotebookApp] The Jupyter Notebook is running at:
[I 19:58:54.279 NotebookApp] https://[all ip addresses on your system]:8888/
[I 19:58:54.279 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 19:58:54.279 NotebookApp] No web browser found: could not locate runnable browser.

关于参数:–config 是可选的,默认会用 jupyter_notebook_config.py 文件,如果有多个用户配置文件(给多个用户分别提供 jupyter notebook),就必须要用这个命令了。–allow-root 是 root 用户启动 jupyter notebook 时的必须参数,实际上不建议使用 root 启动 jupyter notebook,最好还是用其他用户启动,这样在 浏览器端 cmd 窗口就不至于直接暴露 root 权限。
后台运行: 实际使用的时候我们当然会让 jupyter notebook 在后台一直运行着,即使我断开 ssh 连接之后也要可以通过浏览器访问。那也简单,用 nohup 命令就可以了:

nohup jupyter notebook --config jupyter_notebook_config.py --allow-root 2>&1 > my.log & 

用该命令启动 jupyter notebook 之后,原先打印在屏幕上行的日志会写入到 my.log 文本文件中(该文件路径可以替换,当然完全不想要日志的话也可以重定向到 /dev/null)。

浏览器端访问

浏览器端的 url:https://localhost:8888
注意:localhost 可以替换成 ip/域名; https:// 不能丢,否则你会在服务器日志上看到下面的错误:

[W 20:39:48.439 NotebookApp] SSL Error on 10 ('58.59.67.94', 61845): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)
[W 20:39:49.869 NotebookApp] SSL Error on 10 ('58.59.67.94', 61849): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:579)

再注意:由于我们生成的 SSL 证书是非正式签发的,所以Chrome等浏览器可能会提示“您的连接不是私密连接”之类的风险问题,这里选“高级” – “继续前往”就好了。

正常进入主页

Jupyter Notebook 安装配置与使用详解

点击右上角的 New 就可以创建 notebook 文件,然后交互式的写程序了~

三、增加 python3 内核

在主页中,我们可以 单击 New 然后创建 python 2 和 python 3 的 notebook 文件,但是实际上默认只有一个 python 2 的内核(上面用 python 2 安装的 jupyter),New 出来的 python 3 notebook 实际上还是 python 2 的,运行一下 “print 123”,不会报错(python 3 需要 print(123) )。
已有 python 2,安装 python 3内核:

python -m ipykernel install --user
python3 -m pip install -U ipykernel
python3 -m ipykernel install --user

这个时候再去主页,选择 python 3 时就可以用 python 3 的 kernel 了。

四、Jupyter Notebook 的小“坑”

这里不定时记录一些用的时候遇到的问题,以及解决方法。

环境变量问题:如果在代码内修改了环境变量,需要重启 kernel 才能生效;
常驻内存既是优点也是缺点,长期不用的话要自己主动去把 Running 中的项 Shutdown;
待续。