ubuntu服务器上安装jupyter notebook

背景

十年前开始接触python,但是到现在也只会个皮毛,没有系统学习过,最近心血来潮,想好好学习下python。
先前本地安装了sublime+python2.7,用了一段时间,突然发现了一个在线的python编辑工具jupyter。
于是想安装这个工具玩下。百度了下,主要有两种安装方式,一种是通过Anaconda来安装,一种是通过pip工具。鉴于目前国内很多开源镜像站下架了Anaconda的镜像资源(据说是没版权啥,具体原因看相关网站公告),所以我选择用pip来安装。
刚好前段时间我将斐讯N1刷成了armbian(arm版的ubuntu),所以不打算用公网上的服务器来装,直接装到N1服务器上。

第一步安装pip

服务器系统armbian5.67基于ubuntu18.04,自带python3,先安装pip3

    apt-get install pip3 -y

默认安装的pip版本好像是9.1版本太低了,因为后面安装报错,我升级过pip,所以不确定pip低版本是否能安装成功,建议大家也升级下pip

    python3 -m pip install --upgrade pip

然后系统自动将pip升级到了19.1版本

开始安装jupyter

    pip install jupyter

报了一堆错,大意就是缺少某些库,百度搜索报错的时候,很多人给的解决方案是上https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载缺少的包到本地用pip安装,可是我一打开这个网站就发现不对劲,怎么全是win32和amd64的 版本,我是linux系统,而且还是arm架构的,我安装个蛇啊。。
于是于是我尝试用pip安装缺失的那些库

    pip install pyrsistent
    pip install MarkupSafe
    pip install pandocfi
    pip install prometheus-clientlters
    pip install for tornado

总之,把报错提示缺少的包全装了个遍,结果这些包还真装成功了,但是我再次尝试pip install jupyter,又报错了,这次提示

 Did not find libzmq via pkg-config

然后又去爬文,发现一个文章提示说要安装以下依赖

sudo apt-get install libssl-dev libffi-dev python-dev build-essential libxml2-dev libxslt1-dev

仔细看了下,貌似就是这个python-dev没装的问题了,由于我是python3,所以安装对应的python3-dev

    apt-get install python3-dev

然后再执行

    pip install jupyter

这次没有报错了,安装成功

启动jupyter

直接终端里输入

    jupyter notebook

启动报错了, 大意是不能用 root用户启动,有风险,我反正是本地用,懒得去新建用户了,才不管什么风险呢,直接加个参数就可以启动了

    jupyter notebook --allow-root

启动成功,然后生成了一个url地址
可是我拿到浏览器里去访问却打不开,所以需要开启远程访问

jupyter开启远程访问

老规矩先爬文,随便找了篇教程
说明如下

jupyter notebook --generate-config
#这一步是生成配置文件
# 若这里提示sql相关的库缺失,要安装sqlite3等包
#如果报错的话这一堆都安装上吧python3-dev libffi-dev libssl-dev libsqlite3-dev sqlite3 pysqlite2

启动ipython

ipython

然后会看到ipython界面

#输入以下python代码
from notebook.auth import passwd
#然后调用passwd
passwd()
#系统提示输入密码,输入一个你自己想设定的密码后回车,会要求再次输入一遍密码
Enter password:
Verify password:
#然后你会看到系统生成一段shal值,将引号内的值复制下来后面要用到
Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274'

然后退出ipython

exit()

在终端中输入以下命令编辑jupyter的配置文件

vim ~/.jupyter/jupyter_notebook_config.py

#按照如下所示修改对应配置

c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #随便指定一个端口

结果我再次启动jupyter却报错了,报错信息如下(不用看,太长了,我随便贴一段)

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/traitlets/traitlets.py", line 528, in get
    value = obj._trait_values[self.name]
KeyError: 'allow_remote_access'

During handling of the above exception, another exception occurred:

报错信息后面还有一大段,但是我们只用看关键信息,KeyError那一段。
于是我打开jupyter配置文件仔细看了下,找到了allow_remote_access这个配置项,取消这一行的注释,并将False改为True,刚好我看到了一段关于是否允许root用户启动该服务的配置,顺道也改了,这样启动就不用加–allow-root参数了。

c.NotebookApp.allow_remote_access = True
c.NotebookApp.allow_root = True

再次尝试启动jupyter

jupyter notebook

这次没有报错了,使用局域网中的电脑输入服务器的ip地址加端口8888,成功打开了jupyter,输入我们之前设置的密码,进入了jupyter的界面,至此,jupyter环境搞定。
http://ip:8888
顺便提一句,有些人这个时候还是无法访问可能就是防火墙的问题了,需要在服务器上开启指定的端口,或者你本地使用ssh转发端口也行。

2 thoughts on “ubuntu服务器上安装jupyter notebook

  1. Anaconda没有arm版本的(有个miniconda支持arm,是Anaconda的缩水版,但是arm版的从15年后就没有再更新了),所以斐讯N1只能用pip方式安装jupyter

发表评论

电子邮件地址不会被公开。 必填项已用*标注