树莓派3B搭建Jupyter notebook及pyecharts环境的一点经验

0.003字数 1737阅读 6237

前天做 pyecharts 的课程表可视化,感觉如果每次都要render信息生成网页,然后在网页又刷新,才能看到图表,感觉特别麻烦。但是 pyecharts 可以在jupyter notebook,直接运行,马上就可以在代码下方出现图表,很方便。所以决定搭建一个jupyter的环境
Windows上搭建非常简单,就 pip install jupyter,等着完成了 ,然后jupyter notebook 启动jupyter 就OK了
但是, 我没办法一直开电脑,而且运行jupyter有个cmd的窗口很不方便,于是就想起了我这个树莓派。决定操作一波


1. 给树莓派安装Python3.5

sudo apt-get install python3.5 python3-pip
  完成后就有了python3.5和 pip3

2. 安装常用的python package

sudo pip3 install requests bs4 lxml xlwt xlrd django yagmail jupyter pyecharts
  然后会依次安装requests、bs4、lxml这些包。


在这里就已经完成了jupyter和pyecharts的安装了,但是不能正常使用。因为 jupyter 需要 24 小时运行,而我不需要去管,那么登录的时候,就不能使用 jupyter 的默认 token 去登录,这样我每次要写代码,还要去jupyter找一下token。简直太反人类了。
所以需要给 jupyter 配置密码登录,这样不仅每次登录可以接着上次的代码写,而且也不需要去树莓派找token了。



3. 给 jupyter 配置密码登录功能

  我通过百度,找到了几篇博客,感觉写得比较详细的是这个 在服务器端升级python并安装Jupyter,也因此遇到了坑。我按照教程走,设置好了密码,然后看到

## 安装Jupyter插件管理器

Jupyter中邮许多插件,有个插件管理器可以统一管理这些插件[jupyter_contrib_nbextensions]>(https://github.com/ipython-contrib/jupyter_contrib_nbextensions)。
安装也非常简单,使用命令`conda install -c conda-forge jupyter_contrib_nbextensions`就可以自动安装了,>安装完成之后重启Jupyter就可以在浏览器中看到效果。

## []>(http://www.qiuqingyu.cn/2017/05/15/%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E5%8D%87%E7%BA%A7python%E5%B9%B6%E5%AE%89%E8%A3%85Jupyter/#安装jupyterlab "安装jupyterlab")安装[jupyterlab](https://github.com/jupyterlab/jupyterlab)

目前这个项目还在测试过程中,它的目的是增强jupyter的编辑能力,使jupyter如IDE一般强大。
安装:`conda install -c conda-forge jupyterlab`
运行:`jupyter lab`

我安装了,所以之后在使用 pyecharts 的时候报错了。AttributeError: module 'pyecharts' has no attribute 'constants',不管怎么import都会显示,然后看 pyecharts 的文档发现pyecharts不支持jupyterlab,所以我卸载了jupyterlab和他的附属包jupyterlab-launcher,修复了这个问题。


  给 jupyter 设置密码登录其实就简单的3步操作
   1. 生成配置文件. 执行命令 sudo jupyter notebook --generate-config,会在/root/.jupyter文件夹里面生成一个jupyter_notebook_config.py
   2. 生成密码. 在任何一个安装了jupyter的地方,输入然后执行下面的代码

from notebook.auth import passwd
passwd()

我是在电脑本机的notebook 里面执行的,输入2次密码之后就会输出下面的sha1的密钥了。

执行结果

   3. 在jupyter_notebook_config.py中添加密钥信息。这里遇到了一个玄学问题,pi 用户如果 sudo cd /root,会 提示 cd command not found这样的错误,一度让我怀疑我浅薄的linux知识是不是又记错了,然而cd 其他文件夹 都能进去,所以这个定性为玄学问题。所以我换了个办法,用root 用户sftp进去,把配置文件下载下来,更改了再上传回去。更改操作也很简单,在jupyter_notebook_config.py最后加上下面的代码或者把229行开头的#删掉,然后改成这样
c.NotebookApp.password = 'sha1:2766f8b32791:df1f12bafd18ad5930297d7174264bb3bf510792'

4. 启动 jupyter

 输入命令sudo nohup jupyter notebook --port 80 --allow-root --ip 192.168.1.184 --no-browser &回车就OK 了。解释一下这条命令的作用


sudo:   使用超级用户操作
nohup:   一直执行命令,即使关闭了ssh。
jupyter notebook: 在当前文件夹打开jupyter notebook
--port 80:   在本机的80端口监听请求
--allow-root:  &emsp允许使用root用户启动jupyter(监听80端口必须要超级用户权限,所以这个是被迫加上的)
--ip 192.168.1.184: 在192.168.1.184 ip 监听。(如果不加会默认127.0.0.1 会拒绝除本机外的所有访问请求,192.168.1.184就是树莓派的 ip。不知道0.0.0.0行不行,有兴趣可以试一试,如果能行,那就不用知道树莓派的 ip是多少了。经过测试,可以使用0.0.0.0.但是还要要知道树莓派的ip,毕竟要去访问 jupyter,哈哈哈哈)
--no-browser:   不在本机自动打开浏览器
&:   在后台运行这条命令。这样就可以接着去做其他的事情了。


5. 访问 jupyter

在电脑上打开浏览器,输入树莓派的 ip 192.168.1.184 回车,就到了登录界面了


密码登录界面

然后输入你之前设置的密码,然后就进去主界面了,新建了Python代码文件之后,就可以开始写代码啦。


因为是树莓派,所以会有点不一样。测试运行pyecharts的时候,不管怎么样都报错
from PIL import Image\n ImportError: libopenjp2.so.7: cannot open shared object file: No such file
这是个很让人头疼的问题,一看是pillow报错的,不管我重装pillow还是重装pyecharts都不行。百度了很多都没找到办法。最后搜到个Python的包Copreus的页面,发现了安装这个包的办法。
sudo apt install libopenjp2-7 libtiff5 build-essential python-dev,顺便我也把这个帮了我大忙的包安装上了。


大功告成!以后写一点短小的代码或者搞数据相关的代码,就可以不用再打开pycharm啦~!并且手机上打开浏览器就可以写 python 代码了,感觉很方便~~~然后今天找了个大佬帮忙,做了个frp,把这个功能映射到了公网,能打开了,不过运行代码的反应速度比较慢,不知道是不是经过了几层转发的问题。
附上一个测试成功的示例代码,一键运行是真的很方便。

示例

推荐阅读更多精彩内容