CentOS 7虚拟机部署Jupyter Notebook环境

Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等,由于编者想要写一些爬虫,没有合适的环境,于是在虚拟机搭建一个Jupyter Notebook便于随时测试爬虫效果。
由于Jupyter Notebook 与 IPython终端 共享同一个内核,因此,我们需要在CentOS 7上安装Python3的版本。

  1. 安装Python3.7
    环境:CentOS 7.2(7下默认安装python2.7)
    Pyhon3在CentOS中需要依赖一些其他的包,我们一次性用yum安装一下:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

按照下面的代码,安装Python3

wget -c https://www.python.org/ftp/python/3.7.3/Python-3.5.2.tgz
tar -zxvf Python-3.7.3.tgz 
cd Python-3.7.3
./configure --prefix=/usr/local/python3     #prefix后面是安装路径,可以换成自己的安装路径
make
make install

#当需要输入python时直接指向python3.7,可以这样处理:
ln -s /usr/local/python3/bin/python3 /usr/bin/python     #*前面换成你的安装路径*

#ps:如果提示 ln: creating symbolic link `/usr/bin/python': File exists   #需要把原来的/usr/bin/python 通过以下命令备份一下
mv /usr/bin/python /usr/bin/python.bak

#如果此时查看Python版本报错,我们需要恢复原来的python指向的话:
cp /usr/bin/python.bak /usr/bin/python

此时,因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

vi /usr/bin/yum

把#! /usr/bin/python修改为#! /usr/bin/python2

CentOS 7虚拟机部署Jupyter Notebook环境_第1张图片
同样的方法,我们需要编辑urlgrabber-ext-down文件里面的#! /usr/bin/python 也要修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down 

这样我们的虚拟机中就同时安装了Python3 和 Python2就同时存在了,我们查看下Python的版本信息。

python -V

CentOS 7虚拟机部署Jupyter Notebook环境_第2张图片

  1. 安装setuptools
    创建文件夹,下载 setuptools
wget https://pypi.python.org/packages/32/3c/e853a68b703f347f5ed86585c2dd2828a83252e1216c1201fa6f81270578/setuptools-26.1.1.tar.gz#md5=0744ee90ad266fb117d59f94334185d0

解压:

 tar zxvf setuptools-26.1.1.tar.gz

进入该目录:

cd  setuptools-26.1.1

python3 编译安装:

python setup.py build

python setup.py install

3. 安装pip
下载pip:

wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9

解压并安装

tar zxvf pip-9.0.1.tar.gz

cd pip-9.0.1

python setup.py build

python setup.py install

查看pip 版本信息

pip -V

此时pip是已被安装到了/usr/local/python3/bin目录中,我们需要一个软连接,这样我们就可以让两个Python版本使用同一个pip

ln -s /usr/local/python3/bin/pip3.5 /usr/bin/pip3  #当需要输入pip3时直接指向python3中的pip

好了,前面的第一阶段的内容已经完成,我们接下来安装Jupyter Notebook。这个时候我们需要先安装一个虚拟环境,用来承载不同版本的Python。
这次我们选择conda , conda和virtualenv一样,都是用于python项目做多版本环境创建与切换的,也就是在同一个环境中,可以存在几个不同python版本或者不同requirement的虚拟环境,下面简单介绍一下miniconda的安装以及使用。

  1. 下载安装conda
# 下载安装文件
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 安装miniconda,根据提示完成安装
bash  Miniconda2-latest-MacOSX-x86_64.sh
# 需新建Terminal Session或手动加载环境变量来使得conda生效
# 手动加载
source ~/.bash_profie

验证安装成功

conda -h 

CentOS 7虚拟机部署Jupyter Notebook环境_第3张图片
升级conda以及pip version

conda upgrade conda
pip install --upgrade pip

创建虚拟环境
使用conda create创建虚拟环境,比如创建一个名字为jupyter ,python version为3.7的虚拟环境:

# 注意:这里最好指定python的版本,例如python=2.7
# 不然系统会直接使用global python version
# 并且把你所安装的依赖包全部放在global env下面,不利于你对python虚拟环境的隔离
conda create -n jupyter  python=3.7 -y

#创建完毕后注意看提示
#
# To activate this environment, use:
# > source activate djangocms
#
# To deactivate an active environment, use:
# > source deactivate
#

# 查看env list
onda-env list
# conda environments:
#
base                  *  /Users/xy920/miniconda2
djangocms                /Users/mymac/miniconda2/envs/flaskcms

5. 安装Jupyter

安装

pip install jupyter

验证安装成功

jupyter --version

在这里插入图片描述
测试运行
jupyter 默认端口为8888

jupyter notebook

6. 修改配置文件

首先要生成密码,打开python终端。

In [1]: from IPython.lib import passwd

In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:bsbdwinjandwijmkladiowjijsndkowejiofnjheiie93'  #记住这段秘钥

其次,修改配置文件

jupyter notebook --generate-config

打开 jupyter_notebook_config.py 文件:

vim jupyter_notebook_config.py

可以看到全是注释的配置说明,比较复杂,也不是都用得上,这里我们自己写一些重要的配置即可,在文件开头写入:

c.NotebookApp.allow_remote_access =True #非常重要,否则后面运行会报错
c.NotebookApp.ip = "*"
c.NotebookAPp.open_browser = False
c.NotebookApp.password = 'sha1:bsbdwinjandwijmkladiowjijsndkowejiofnjheiie93'
# c.NotebookApp.certfile = u'/root/.jupyter/mycert.pem'   #https
c.NotebookApp.port= 8888  #根据自己的端口,我的默认
c.NotebookApp.notebook_dir = "/local/python"

然后运行Jupyter Notebook

jupyter notebook 

CentOS 7虚拟机部署Jupyter Notebook环境_第4张图片
浏览器访问
CentOS 7虚拟机部署Jupyter Notebook环境_第5张图片
OK,至此 Jupyter Notebook 在虚拟机环境下的搭建全部完成,可以愉快的使用了!

需要注意的坑
1.centos7下执行firewall-cmd显示ImportError: No module named ‘gi’
原因:出现这个问题是,更新了Python版本(version>=Python3),cnetos7系统自带的是Python2.7。
解决办法:

在安装python时,一般教程都会提示说,安装成功后,yum不能用,需要修改yum配置文件(vim /usr/bin/yum)。 把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7
那么这个方法,继续可以在这个问题上使用: 
第一步,vim /usr/bin/firewall-cmd, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es(到目前为止,上面提到的问题已解决)
第二步,vim /usr/sbin/firewalld,  将#!/usr/bin/python -Es 改为 #!/usr/bin/python2.7 -Es (这一步是针对于防火墙报错,进行的修改)

2.安装jupyter后,使用时显示找不到命令(command not found)
解决办法:
首先打开终端,找到jupyter是否存在

find  / -name jupyter 

发现了jupyter位置,注意bin文件是存放命令的,所以我们把它添加到环境变量

 vim /etc/profile
添加如下代码
export PATH=$PATH:~/.local/bin   # 这里是Jupyter安装的位置路径 bin文件
退出编辑
source  /etc/profile//执行配置

CentOS 7虚拟机部署Jupyter Notebook环境_第6张图片
3.python3 关于问题jupyter notebook Traceback (most recent call last)
遇到用pip安装完jupyter 然后运行jupyter notebook命令,出现以下错误:

Traceback (most recent call last):
  File "e:\py3\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "e:\py3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "E:\py3\Scripts\jupyter-notebook.EXE\__main__.py", line 5, in 
  File "e:\py3\lib\site-packages\notebook\notebookapp.py", line 38, in 
    from jinja2 import Environment, FileSystemLoader
  File "e:\py3\lib\site-packages\jinja2\__init__.py", line 33, in 
    from jinja2.environment import Environment, Template
  File "e:\py3\lib\site-packages\jinja2\environment.py", line 15, in 
    from jinja2 import nodes
  File "e:\py3\lib\site-packages\jinja2\nodes.py", line 19, in 
    from jinja2.utils import Markup
  File "e:\py3\lib\site-packages\jinja2\utils.py", line 647, in 
    from markupsafe import Markup, escape, soft_unicode
  File "e:\py3\lib\site-packages\markupsafe\__init__.py", line 14, in 
    from markupsafe._compat import text_type, string_types, int_types, \
ModuleNotFoundError: No module named 'markupsafe._compat'

原因:centos7 里面装了Python2.7 和 Python(其他) 两个版本,执行firewall-cmd 系列的命令的时候回运行Python文件结果Python文件的头 #!/usr/bin/python 都不会再python2.7 里面运行,
解决办法:

systemctl status firewalld.service

编辑: vim /usr/sbin/firewalld 将头改为 2.7 即可

 vim /usr/sbin/firewalld 

CentOS 7虚拟机部署Jupyter Notebook环境_第7张图片
到这里,我踩过的坑都给大家填上了,欢迎批评指正!

你可能感兴趣的:(Jupyter)