前天做 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,把这个功能映射到了公网,能打开了,不过运行代码的反应速度比较慢,不知道是不是经过了几层转发的问题。
附上一个测试成功的示例代码,一键运行是真的很方便。

网友评论