Jupyter Notebook 安装配置与使用详解


Posted in Python onJanuary 06, 2021

本文示例环境: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;
待续。

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

Python 相关文章推荐
Python中的Numpy入门教程
Apr 26 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
tensorflow自定义激活函数实例
Feb 04 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python改变对象的字符串显示的方法
Aug 01 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 #Python
python requests库的使用
Jan 06 #Python
Python 实现进度条的六种方式
Jan 06 #Python
基于Python实现天天酷跑功能
Jan 06 #Python
python 下载文件的几种方法汇总
Jan 06 #Python
python 视频下载神器(you-get)的具体使用
Jan 06 #Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 #Python
You might like
php 缓存函数代码
2008/08/27 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Python中asyncore的用法实例
2014/09/29 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python编写登陆接口的方法
2017/07/10 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
对python的输出和输出格式详解
2018/12/08 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python中判断文件结束符的具体方法
2020/08/04 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
报关员个人职业生涯规划书
2014/03/12 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
党员目标管理责任书
2014/07/25 职场文书
单位工资证明范本
2015/06/12 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers