Pyinstaller打包pyecharts和pyqt程序 生成exe错误解决
1.安装pyinstaller
$ pip install pyinstaller
2.pyinstall命令参数解析
pyinstaller [参数] [图标文件.ico][要打包的程序.py] 参数说明: –i 选择.ico图标文件 -F 打包成一个exe文件 -w exe使用窗口,无控制台,建议调试完全正常后再使用 -c exe使用控制台,无窗口,建议先使用控制台,打开exe之后可以看到错误信息 -D 创建一个目录,里面包含exe以及其他一些依赖性文件 pyinstaller -h 来查看参数
ico文件生成:http://www.bitbug.net/
3.打包步骤
①把所有用到的py文件放在一个文件夹中,并使用main.py统一调用,在当前文件夹打开cmd
②输入pyinstaller -F -i -c pic.ico main.py,回车后会自动执行,其中INFO是正常的,WARNING可以忽略,但若出现ERROR应该按照提示解决,最后出现下图的exe路径就是成功了,另外会在目录下生成main.spec、build文件夹、dist文件夹 ③不要急着打开生成的exe,因为你文件目录下的其他py文件还没include。看到文件目录下生成的main.spec,这是一个脚本,pyinstaller就是根据这个脚本内容而进行打包的。打开main.spec,看到圈住的一个list,在里面添加其他的.py文件 变成 ④先把第二步生成的build文件夹、dist文件夹删除!!! 在cmd中执行pyinstaller -F -i -c pic.ico main.spec 注意是main.spec
⑤打开生成的dist文件夹,里面有一个main.exe,不要直接双击打开!!因为如果遇到错误会直接闪退,在当前路径下打开文件夹,输入.main.exe会看到错误信息。如果到这里都一帆风顺,那么恭喜你打包已经成功。
但是往往没有这么顺利,下面说说打开exe文件后遇到的错误及解决方法
错误:[Errno 2] No such file or directory: C:UsersADMINI~1AppDataLocalTemp\_MEI一串数字pyechartsdatasetsmap_filename.json
解决方法:可以看到这是一个关于pyecharts的错误,错误原因是使用pip来安装pyecharts,由于网络原因或配置问题某些文件缺失导致的,因此改用源码安装即可
$ git clone https://github.com/pyecharts/pyecharts.git $ cd pyecharts $ pip install -r requirements.txt $ python setup.py install
但是解决上述错误后,删除文件夹再次打包运行还是出现另一个错误
错误:pkg_resources.DistributionNotFound:the “prettytable” distribution was not found…
解决方法:在python安装目录下D:PythonLibsite-packagesPyInstallerhooks下面新建hook-ctypes.macholib.py在其中输入下面语句。可能你遇到的引号中内容"prettytable"不一样,但是解决方法不变,将对应内容修改即可
from PyInstaller.utils.hooks import copy_metadata datas = copy_metadata(prettytable)
删除文件夹,再次打包pyinstaller -F -i -c pic.ico main.spec,双击成功运行
