首页 > 编程语言 > Jupyter Notebook 安装配置与使用详解
2021
01-08

Jupyter Notebook 安装配置与使用详解

本文示例环境: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 地址

token登录界面

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

token登录成功

二、配置

上述步骤创建的 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

生成了配置文件 

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

[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等浏览器可能会提示“您的连接不是私密连接”之类的风险问题,这里选“高级” ? “继续前往”就好了。

正常进入主页

空白的主页

点击右上角的 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;
待续。

到此这篇关于Jupyter Notebook 安装配置与使用详解的文章就介绍到这了,更多相关Jupyter Notebook 安装配置内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

编程技巧