Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等,由于编者想要写一些爬虫,没有合适的环境,于是在虚拟机搭建一个Jupyter Notebook便于随时测试爬虫效果。
由于Jupyter Notebook 与 IPython终端 共享同一个内核,因此,我们需要在CentOS 7上安装Python3的版本。
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
同样的方法,我们需要编辑urlgrabber-ext-down文件里面的#! /usr/bin/python 也要修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
这样我们的虚拟机中就同时安装了Python3 和 Python2就同时存在了,我们查看下Python的版本信息。
python -V
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的安装以及使用。
# 下载安装文件
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
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 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
浏览器访问
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//执行配置
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