1、引言
由于项目需要在推广时需要往各个渠道投放,就需要打出包含不同渠道的sdk!由于渠道众多,手动实在影响效率,动辄需要几十个包,使用androidstudio手动打包实在费时间,这里我们使用pyQt5写了一个打包工具,支持批量打包!由于平时在mac上开发,这里就需要导出Mac的独立程序。一番查找还是使用PyInstaller。事实上,PyQT5 封装独立程序,方法不止一种,这里优先推荐 PyInstaller,而非 py2app 或者 py2exe。
这是因为 py2app 等不会将程序环境(如 python 的 frameworks 等)打包进去,因此并不会封装为一个独立的软件(standalone app),具体表现为仅能在本机正常运行,在别人的电脑上运行会报错。然而 pyinstaller 则封装完整,可在同系统的不同机器上运行。事实上,PyInstaller 封装 Windows 端的 exe 文件也是不错的选择。
2、准备
- Python3环境
- Python工具包
pip3 install pyinstaller
3、封装步骤
在终端中cd 到项目路径,也就是main函数所在文件main.py, 切换完成后依次输入下面命令:
sudo pyinstaller --windowed --onefile --clean --noconfirm main.py
sudo pyinstaller --clean --noconfirm --windowed --onefile main.spec
其中:
- sudo 表示获取权限,可能要求输入密码
- 这里的第一条指令表示使用默认的配置,打出来的包的图标是默认的。如果想要打出的包使用自己的图标,第一条命令替换为:
sudo pyinstaller --windowed --onefile --icon=icon.icns --clean --noconfirm main.py
这里使用了在main.py所在路径下的名为icon.icns的图片。不同的操作系统要使用的图片格式也是不同的Mac为*.icns格式,而 windows 系统下的图片格式应为 .ico,可以使用ICONVERT ICONS转换工具进行相应格式的转换,非常方便。
另外这里导出的文件(在dist目录)名为 main,这是一个默认名字。这不是我们所期望的,这里只需要增加一个可选参数就可以导出我们期望的名字,相关的设置可以点此参考官网,也可以自行查找相关pyinstaller参数介绍以及总结,总之为了方便还是推荐改下名字:
sudo pyinstaller --windowed --onefile --icon=icon.icns --clean --noconfirm main.py --name fishTool
sudo pyinstaller --clean --noconfirm --windowed --onefile fishTool.spec
到这里我们就生成我们心仪的.app文件,可以在显示简介里看到他的属性,运行一下可以在terminal中看到运行日志了。
4、注意事项
一般我们很少一次性能导出成功,主要是一些包导入问题和项目文件配置路径。
- eg:获取包路径的父路径,不可将路径写成绝对路径。
- eg:打包后应用运行后比较模糊,可以在显示包内容中修改Contents/Info.plist文件,添加如下内容,开启高清解决方案:
<key>NSHighResolutionCapable</key>
<string>True</string>
5、结束语
The End
好了,今天的分享就到这里,如有不足之处,还望大家及时指正,随时欢迎探讨交流!!!
喜欢的朋友们,请收藏、点赞、评论!您的肯定是我写作的不竭动力!