在CentOS7上部署Python开发工具Jupyter Notebook的遭遇
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS7上部署Python开发工具Jupyter Notebook的遭遇相关的知识,希望对你有一定的参考价值。
在Linux(CentOS7)上安装部署Jupyter Notebook遇到三个关键点:
- 缺少libstdc++.so.6库
- 配置Jupyter Notebook工作环境, 设置远程/本地访问使用登录密码
- 设置防火墙,允许网络访问
1. 安装Jupyter Notebook
使用国内(阿里)源pip安装,速度快!
[root@DeepLearning python]# pip3 install jupyter -i https://mirrors.aliyun.com/pypi/simple/
注:pip3是自定义出来的,祥见[2]:
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
2. 部署Jupyter Notebook工作环境
安装后Jupyter Notebook的目录在:
/usr/local/python3/bin
2.1. 创建配置文件及遇到“缺少libstdc++.so.6库”问题
在bin目录下使用命令“./jupyter notebook --generate-config“时出现报错:
[root@DeepLearning bin]# ./jupyter notebook --generate-config
Traceback (most recent call last):
File "./jupyter-notebook", line 6, in <module>
from notebook.notebookapp import main
......
ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory
问题原因:
系统是64bit,该库是32bit的,在64bit系统上安装32bit库。
解决方案:
1、查找libstdc++.so.6库
[root@DeepLearning bin]# yum whatprovides libstdc++.so.6
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
libstdc++-4.8.5-44.el7.i686 : GNU Standard C++ Library
源 :base
匹配来源:
提供 :libstdc++.so.6
2、安装 libstdc+±4.8.5-44.el7.i686
[root@localhost ~]# yum install libstdc++-4.8.5-44.el7.i686
3、查看libstdc++.so.6软连接情况
[root@bigdatahost lib64]# ls -al libstdc++.so.6
lrwxrwxrwx. 1 root root 19 Apr 27 08:20 libstdc++.so.6 -> libstdc++.so.6.0.19
4、从路径/usr/local/lib64拷贝文件libstdc++.so.6.0.21(或者更高版本,例如libstdc++.so.6.0.24)到路径/usr/lib64
[root@bigdatahost lib64]# cp /usr/local/lib64/libstdc++.so.6.0.21 libstdc++.so.6.0.21
5、重新设置libstdc++.so.6软连接
最好先备份原软连接libstdc++.so.6,再删除后重新配置libstdc++.so.6软连接。
[root@bigdatahost lib64]# cp libstdc++.so.6 libstdc++.so.6.bak19
[root@bigdatahost lib64]# rm -rf libstdc++.so.6
[root@bigdatahost lib64]# ln -s libstdc++.so.6.0.21 libstdc++.so.6
再次创建配置环境,成功如下:
[root@DeepLearning bin]# ./jupyter notebook --generate-config
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
2.2. 配置工作环境
首先,创建工作文件夹。
[python@DeepLearning ~]$ pwd
/home/python
[python@DeepLearning ~]$ mkdir jupyter-workspace
注:当前用户是python。
接着,编辑配置文件:/root/.jupyter/jupyter_notebook_config.py
[root@DeepLearning bin]# vi /root/.jupyter/jupyter_notebook_config.py
## notebook服务会监听的IP地址.
c.NotebookApp.ip = '192.168.19.229'
## 用于笔记本和内核的目录。
c.NotebookApp.notebook_dir = '/home/python/jupyter-workspace'
## 启动默认打开浏览器,关闭.
c.NotebookApp.open_browser = False
## Hashed password to use for web authentication.
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=*********'
## The port the notebook server will listen on (env: JUPYTER_PORT).
c.NotebookApp.port = 8888
其中,c.NotebookApp.password是后设置的,启动时报错,要求设置密码。如果不设置密码,则无法启动服务,设置密码过程如下:
方法一,在终端打开python客户端:
[root@DeepLearning python]# python3
>>> from notebook.auth import passwd
>>> passwd()
Enter password:
Verify password:
'argon2:$argon2id$v=19$m=10240,t=10,p=**********'
方法二,或者在开发工具,例如Pydev中。
from notebook.auth import passwd
pwd = passwd()
print(pwd)
执行程序
Warning: Password input may be echoed.
Enter password: ****
Warning: Password input may be echoed.
Verify password: ****
argon2:$argon2id$v=19$m=10240,t=10,p=******
2.3. 打开防火墙
[root@DeepLearning bin]# firewall-cmd --zone=public --add-port=8888/tcp --permanent
success
[root@DeepLearning bin]# firewall-cmd --reload
3. 启动jupyter notebook服务
不建议以root身份运行,使用–allow-root绕过。
[root@DeepLearning bin]# ./jupyter notebook --allow-root
[I 17:52:10.638 NotebookApp] 启动notebooks 在本地路径: /home/python/jupyter-workspace
[I 17:52:10.639 NotebookApp] Jupyter Notebook 6.4.4 is running at:
[I 17:52:10.639 NotebookApp] http://192.168.19.229:8888/
[I 17:52:10.639 NotebookApp] 使用control-c停止此服务器并关闭所有内核(两次跳过确认).
参考:
[1]. 肖永威 . XGBoost遇到“Error message(s): [“/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘”错误解决案例] . CSDN博客 . 2021.08
[2]. 肖永威 . 基于CentOS7安装Python3计算环境与PyDev(Eclipse)开发工具日志(2021年) . CSDN博客 . 2021.04
以上是关于在CentOS7上部署Python开发工具Jupyter Notebook的遭遇的主要内容,如果未能解决你的问题,请参考以下文章
CentOS7下 将django工程部署到Apache2.4上
CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇