在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下部署两套python版本并存

centos7部署pyenv安装python多版本

Centos7部署tornado项目

CentOS7下 将django工程部署到Apache2.4上

CentOS7.0上部署Python

CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇