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的Django框架可适配的各种数据库介绍
Jul 15 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 Python
详解Python多线程下的list
Jul 03 Python
基于python实现可视化生成二维码工具
Jul 08 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Python生成九宫格图片的示例代码
Apr 14 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python实现获取某天是某个月中的第几周
2015/02/11 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python图片合成的示例
2020/11/09 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
合作协议书怎么写
2014/04/18 职场文书
绿色环保口号
2014/06/12 职场文书
活动总结报告怎么写
2014/07/03 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
打架检讨书范文
2015/01/27 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python