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:\Users\ADMINI~1\AppData\Local\Temp\_MEI一串数字\pyecharts\datasets\map_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:\Python\Lib\site-packages\PyInstaller\hooks
下面新建hook-ctypes.macholib.py
在其中输入下面语句。可能你遇到的引号中内容"prettytable"
不一样,但是解决方法不变,将对应内容修改即可
from PyInstaller.utils.hooks import copy_metadata
datas = copy_metadata('prettytable')
删除文件夹,再次打包pyinstaller -F -i -c pic.ico main.spec
,双击成功运行