背景
十年前开始接触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转发端口也行。
Anaconda没有arm版本的(有个miniconda支持arm,是Anaconda的缩水版,但是arm版的从15年后就没有再更新了),所以斐讯N1只能用pip方式安装jupyter
大兄弟研究一下N1装 rocketchat-server吧
官网提示树莓派只能用SNAP 安装,snap国内太慢,我启动了之后后面报configure 什么东西错误哎。
我没装过,不过我查了下这个东西 ,几条命令就可以搞定的呀,看起来不难呀。