pyinstaller+pyecharts报错:[Errno 2] No such file or directory: ‘..\map_filename.json‘;以及win10/win7不兼容

文章讲述了在使用PyInstaller打包项目时遇到的关于pyecharts的错误,涉及__HERE变量修改导致的map_filename.json丢失问题。作者提供了创建hook-pyecharts.py和添加数据文件、隐式导入的详细解决步骤,以及处理Win7系统缺失dll的问题。
摘要由CSDN通过智能技术生成

pyinstaller和py2exe是常用的.py打包.exe工具,但打包引用了pyecharts的代码时总是报错。虽然.exe打包成功,但双击运行时闪退,报错:

[Errno 2] No such file or directory: 'C:\Users\ADMINI~1\AppData\Local\Temp\_MEI一串数字\pyecharts\datasets\map_filename.json

这是因为打包时修改了.\site-packages\pyecharts\datasets\_init_.py里的__HERE变量,使其找不到map_filename.json

网上有解决方案是重新源码安装pyecharts,可能有用,下面是我亲测有效的解决办法:

解决办法:

1.在.\Lib\site-packages\PyInstaller\hooks路径下新建一个hook-pyecharts.py,里面写入

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('pyecharts')

2.在用Pyinstaller打包时,加入两个命令参数:

pyinstaller --add-data="D:\Program Files (x86)\PycharmProjects\map\Lib\site-packages\pyecharts;pyechats" --hidden-import=pyecharts.render.engine -F GUI.py

生成的.exe便可正常运行了

运行环境:

本人的运行环境是win7+python3.7,第三方库的路径为D:\Program Files (x86)\PycharmProjects\map\Lib\site-packages

Win10/Win7不兼容

之前是在win7环境下开发、打包,在win7环境运行没问题。之后开发环境变成win10,再去win7运行.exe就会报错:

缺少api-ms-win-crt-runtime-l1-1-0.dll

win10上就可以正常打开

解决办法:

网上有很多说在win7系统里加入这个.dll文件,然后在注册表启动。但这样太麻烦了,而且测试了没用,最好还是能一起打包进.exe。

这个.dll位于C:\Windows\System32\downlevel下,用pyinstaller打包时把路径加进去,隐式导入win32timezone,命令修改为:

pyinstaller -D -p C:\Windows\System32\downlevel --add-data="C:\Users\Faker\AppDat
a\Local\Programs\Python\Python36\Lib\site-packages\pyecharts;pyechats" --hidden-import=pyecharts.render.engine;win32timezone -F GUI.py

这次打包的.exe可以在win7正常运行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值