在公司的内网上跑pyecharts生成的html,打开后是空白的。
原因:pyecharts会自动去https://assets.pyecharts.org/assets/上拉取js,不联网的情况下就获取不到文件,所以出不了图。
参考了网上的教程,但是不能直接解决,需要略作修改。
下面分别对两种场景提出解决方法,一种是python直接跑在物理机上,另外一种是python跑在容器里。
物理主机上运行python
1. 下载pyecharts-assets-master.zip并解压上传到服务器上。
2. 启动本地http服务器,提供文件下载
网上的资料都是说用:
python -m http.server
但是笔者试验后,发现需要指定ip才可以:
python -m http.server -b 10.129.xx.xx 8000
3. 验证http server是否正常启动:
如下代表正常启动
4. python程序里需要指定从哪里获取文件:
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "http://10.129.xx.xx:8000/assets/"
容器内运行python
笔者大部分程序都是在容器内部署的,所以需要搞定跑在容器内的程序,如何用pyecharts画图。
1. 启动http server:
尝试了在容器内部启动server,但是不管指定什么ip,都不行。
目前可行的是在物理机上使用物理机本机的ip启动http server,不在物理机上,只要在一个局域网内,也是可以的。
2. python脚本
CurrentConfig.ONLINE_HOST与启动http server的IP一致。
经过验证,这样可以出图。