作为一个刚刚入门pyqt5的老白,每次写完代码总是迫不及待的进行打包,但是就python来讲,轮子越多出的问题也越多,即便是同样的代码在版本更新后也会出现新问题,最近我在打包一个多py文件的pyqt5时就遇到了新问题,经过半天的查找终于把问题解决了,为了将方法记录下来给以后的自己看,同时也是为了给新入门的小白们少走弯路,特写下本文。
打包的工具我选用“Auto-Py-to-Exe”,“Auto-Py-to-Exe”是基于pyinstaller写的一个带GUI的打包工具,用起来很方便,当然熟悉pyinstaller也可以用pyinstaller,除此之外还有cx_Freeze甚至Nuitka,cx_Freeze我没试过, Nuitka试过了,搞了两天以失败告终。“Auto-Py-to-Exe”相对要简单得多,使用前在环境下用pip install Auto-Py-to-Exe进行安装,安装成功后在命令提示框里键入Auto-Py-to-Exe打开GUI界面:
第一行 “Script Location”是脚本位置,无论是单py文件还是多py文件,在这里我们只需要填入主代码py文件即可,该打包工具会将在逻辑代码中import过的py文件一一识别并生成打包命令(这在pyinstaller中需要在.spec文件中的把其他py文件统统加到存放py文件的字典里),接下来在“Onefile”项中我选择one directory(单目录),为什么不选择单文件呢?,因为我打包的文件中还需要加入数据库文件和其他的一些文件,比如“pyecharts-assets-master”,这些文件过于庞大,不便于打包在exe中,或者打包出来的 exe文件过大,不便于使用,再接下来就是图标,图标可选可不选,这个要看需求,再往下就是“additional files”(附件文件),这里我的程序需要pyecharts 文件,所以,我找到pyecharts 的路径,将其作为附件文件夹进行添加,主要的设置就是以上这几项,当然,还有“Console Window”选项,这个选项一开始最好选择“console base”,因为程序在一开始试用的时候可能会存在不可预知的错误,选择“console base”打包生成的软件在使用时会相应生成一个命令行,它会在遇到错误的时候将异常显示在命令行中,这可以使程序员更好的调式错误。一切就绪后点击最下面的“转换”按钮,静静地等待着程序打包,1分多钟后,程序打包完成,点击右侧的输出框,跳转到output文件夹下,这时再进入主py文件命名的文件夹就见到打包好可执行文件了。