1、PyInstaller简介
PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序。
PyInstaller 制作出来的执行文件并不是跨平台的,如果需要为不同平台打包,就要在相应平台上运行PyInstaller进行打包。
2、PyInstaller安装
在命令窗口输入下面命令安装
pip install Pyinstaller
3、使用PyInstaller打包
打包需要两个步骤,在命令行输入以下两个命令
#打包代码
pyinstaller -i tool_icon\WearfitOS_Toolbox.ico -F main.py -n lvgl_resouce_tool
#打包资源
pyinstaller -F -w lvgl_resouce_tool.spec
由于总是输入两次命令,并且每次都要输入感觉太麻烦,所以写了一个脚本
import os
#图标路径
icon_file_path = "tool_icon\WearfitOS_Toolbox.ico"
#主程序文件
main_file_path = "main.py"
#打包好后程序名
appliction_name= "lvgl_resouce_tool"
#要打包的资源路径
source_path = “tool_icon”
def updateFile(file,old_str,new_str):
"""
将替换的字符串写到一个新的文件中,然后将原文件删除,新文件改为原来文件的名字
:param file: 文件路径
:param old_str: 需要替换的字符串
:param new_str: 替换的字符串
:return: None
"""
with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
for line in f1:
if old_str in line:
line = line.replace(old_str, new_str)
f2.write(line)
os.remove(file)
os.rename("%s.bak" % file, file)
def Package_Exe_Handle():
#-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
#-F [filename.py] 创建一个单文件的可执行程序
#-n [name] 指定可执行文件名称。默认是第一个脚本的名称
os.system(" pyinstaller -w -i %s -F %s -n %s"%(icon_file_path,main_file_path ,appliction_name))
updateFile("./main.spec", "datas=[]", "datas=[\"%s\",\"%s\"]"%(source_path ,source_path ))
os.system(" pyinstaller -F -w %s.spec"%appliction_name)
def main():
Package_Exe_Handle()
if __name__ == "__main__":
main()
注意:路径中不能有空格 不然会有问题