前提需安装python和Pyinstaller,具体安装步骤请参考:
https://jingyan.baidu.com/article/a378c960b47034b3282830bb.html
下面是完整发布命令发布独立exe应用步骤(需打包的文件名test.py):
1)在cmd命令行下将目录切换到Python安装盘下,如F:\Python\Script;
2)执行命令:pyinstaller.exe -F -w test.py; (注意:如果-w参数存在,控制台上不会显示print打印的信息,如果想要程序中print的信息打印在控制台上,去掉参数-w即可)
如果需要打包成带图标的可执行应用,执行以下命令:pyinstaller.exe -F -i pic.ico test.py
其中,icon图标可在比特虫上在线制作:https://www.bitbug.net/
3)执行步骤2)后,在F:\Python\Script目录下即可看到生成了一个dist文件夹,该文件夹下生成了与打包文件名同名的EXE执行文件,即test.exe;
4)运行生成的exe文件,验证是否为你所需实现的功能即可。
注意:当.py文件运行正常,运行打包后的exe,没有实现py文件的功能,可从以下几个方面进行思考:
1.py文件中是否用到其它文件,该文件是否放置在exe文件的同一目录下;
2.py文件中是否import引进自定义类库文件,而import导入的自定义类库文件是否在打包时加入到打包时生成的文件spec中;
3.py文件中是否存在使用路径,查看路径是否正确,最好写成绝对路径
可能会遇到的问题及解决方法:
Q1.程序代码中使用定时任务模块apscheduler时,scheduler.add_job(monitorLibs, 'interval', seconds=10, args=[sPath,tPath]),不适用pyinstaller打包可正常运行,使用pyinstaller打包成可执行文件后运行会出现以下问题"LookupError:No trigger by the name "interval"/"cron" was found"
解决方法:将代码“scheduler.add_job(monitorLibs, 'interval', seconds=10, args=[sPath,tPath])”修改为以下代码即可
from apscheduler.triggers.interval import IntervalTrigger
#from apscheduler.triggers.cron import CronTrigger
trigger = IntervalTrigger(seconds=10)
scheduler.add_job(monitorLibs, trigger, args=[sPath,tPath])
Pyinstaller打包一些其他经验总结,可参考:
https://blog.csdn.net/weixin_42052836/article/details/82315118