PyInstaller 安装和简单使用
注:安装 pyinstaller 前,先安装 2 个 Python 模块 pypiwin32,pywin32 和 pefile 包
安装 PyInstaller
方法一:直接使用 pip,国内网络会无法连接
1
pip install pyinstaller
方法二:下载源码安装
下载页面:http://www.pyinstaller.org/downloads.html
最新安装包:
https://github.com/pyinstaller/pyinstaller/releases/download/v3.3/PyInstaller-3.3.
tar.bz2
查看安装结果,运行命令:
pyinstaller --version
说明安装成功。
简单的编译,运行代码:
Pyinstaller -F D:\pyworker\learning\hello.py
如果没设环境变量,请使用全路径执行 如:
D:\Python\Python36\Scripts\Pyinstaller -F D:\pyworker\learning\hello.py
目录下会出现编译结果:exe 文件在 dist 目录中
相关参数:
1. pyinstaller -D mytest.py;-onedir 创建一个目录,包含 exe 文件,但会依赖很多文件(默认选项)。
2. pyinstaller -c mytest.py;-console, –nowindowed 使用控制台,无界面(默认)
3. pyinstaller -F mytest.py;-onefile 打包成一个 exe 文件
4. pyinstaller -w mytest.py;-windowed, –noconsole 使用窗口,无控制台
5. pyinstaller -F -i myicon.ico mytest.py;可为 exe 文件生成图标。
6. 压缩生成的 exe 文件
用 UPX 去压缩,压缩后所生成的 exe 文件的大小,会小得多
--upx
[--upx-dir UPX_DIR]
先下载 http://upx.sourceforge.net/解压到要转换到的 py 文件目录下
pyinstaller 参数中添加 upx 路径
pyinstaller -F mytest.py --upx-dir upx391w
注:upx391w 为 upx 文件夹
修改程序左上角的’tk’图标
# ...省略部分
root = Tk(className='数据生成器')
root.iconbitmap('gen.ico') # 加图标
app = App(root)
root.mainloop()
如下:
替换’tk’图标后,打包的 exe 执行失败
原因是图标没有打进去,或者打包成文件夹,或者把图标转化成 base64 数据:
# 这段程序可将图标 gen.ico 转换成 icon.py 文件里的 base64 数据
import base64
open_icon = open("gen.ico","rb")
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "img = '%s'" % b64str
f = open("icon.py","w+")
f.write(write_data)
f.close()
修改主程序:
# ...省略部分
import base64
from icon import img
import os
# 将 import 进来的 icon.py 里的数据转换成临时文件 tmp.ico,作为图标
tmp = open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()
root = Tk(className='数据生成器')
app = App(root)
root.iconbitmap('tmp.ico') # 加图标
os.remove("tmp.ico") # 删掉临时文件
root.mainloop()
再执行打包命令
pyinstaller -F -i myicon.ico mytest.py