txxcat 发表于 2020-5-25 17:25:40

pyinstaller打包pyecharts程序运行报错的解决方法

本帖最后由 txxcat 于 2020-5-25 17:43 编辑

    pyinstaller打包pyecharts程序后运行报错,这是pyinstaller不兼容pyecharts导致,无论0.5之前还是1.x的版本都会这样。
    先在网上找了段代码进行打包工作,运行环境是:win10 64 + python3.8.2 + pyecharts1.71,代码如下:
    import pyecharts.options as opts
from pyecharts.charts import Bar

attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 =
v2 =

bar = (
Bar()
.add_xaxis(attr)
.add_yaxis("商家A", v1, stack="stack1")
.add_yaxis("商家B", v2, stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="柱状图数据堆叠示例"))
)

bar.render()
    打包命令是:
    pyinstaller test.py
    没有加入任何参数,是为了好调试,这个默认是使用-D参数,打包成多个文件。然后运行打包好的程序,会报一大摞的错误,一般来说,我们只需要关心最后几行。
   
    提示:No such file or directory: 'D:\\temp\\dist\\test\\pyecharts\\datasets\\map_filename.json',查了一下,这个json文件在python第三方包目录下的pyecharts\datasets\下,一起的还有三个json文件,按错误提示的路径在打包文件的目录下建立pyecharts目录,然后把datasets目录整个拷贝过来。
    然后再运行程序,又报错。
   
    和刚才的不同:jinja2.exceptions.TemplateNotFound: simple_chart.html。再次查找 ,simple_chart.html在pyecharts\render\templates\下,为了保证完整目录结构,把整个render拷贝到刚才建立的pyecharts目录下,再次运行,没有报错,生成了正确的文件,问题解决。
   
    总结一下,pyinstaller没有把pyecharts的一些数据模版文件拷贝过来导致错误,拷贝过来即可,如下图那两个目录,不过这个修改只适用于-D参数打包的情形,-F整体打包就不行了,只能等pyinstaller来修正这个bug了。
   
    上面的目录拷贝到下面即可。
   

xiaosi4081 发表于 2020-5-25 17:37:14

沙发{:10_256:}
页: [1]
查看完整版本: pyinstaller打包pyecharts程序运行报错的解决方法