一、Pyinstaller使用背景
在业务场景中, 经常需要Python开发一些脚本/小程序/GUI界面,交付给一些小白或未安装Python 的小伙伴们使用。
Pyinstaller是一个免费打包工具,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包成可执行的.exe文件,
它可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。
PyInstaller支持Python 2.7和Python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是生成的可执行文件并不是跨平台的,也就是说如果要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;打包成mac app,需要在Mac OS上使用;而linux系统下打包的可执行文件则没有后缀,比如对xxx.py进行打包,打包后的文件名为xxx。
二、Pyinstaller安装
pip install pyinstaller
国内镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
三、打包参数
# 常用打包参数
# -F -D互斥参数
-F 打包成一个exe文件,小项目可以采用,打开比较慢,多个.py打包时不能使用
-D 默认参数,打包结果放入到创建的文件夹中,其中包含依赖文件和,可以看到里面有很多的依赖文件,如果删除依赖文件仅仅保留exe文件,会导致无法执行。因此,提供给别人使用时候需要将整个文件夹提供过去。
# -w -c互斥参数
-w 不显示控制台窗口,GUI可视化程序需要此项
-c 默认参数,使用cmd控制台 如果打包文件执行报错,可尝试用-c 显示控制台
-n 指定应用程序包的名称(默认值:第一个脚本的名称)
-i 指定可执行exe文件的ico图标 icon图标可以直接下载,也可以在线制作:https://tool.lu/favicon/
# 打包命令示例
pyinstaller -F -w D:\Document\Workspace\pyQt5\call_dataConversion.py -i D:\Document\icon\w3.ico -n 神之刀
# 打包结果输出在项目根目录下的 dist文件夹中
备注:不同的操作系统, 需要在不同的操作系统进行打包。
四、踩坑
使用pyinstaller进行打包时候,如果提示:pyinstaller打包时提示UPX is not available
解决办法:
(1) 到官网下载一个对应版本UPX压缩包(64位 or 32位),下载地址:https://github.com/upx/upx/releases/tag/v4.0.2
(2) 解压得到 upx.exe文件
(3) 把exe文件拷贝到pyinstaller目录下, 如:C:\python\Scripts
然后再重新运行pyinstaller命令就会提示: UPX is available了。