使用pyinstaller打包python程序为exe却不能执行的解决办法
“温故而知新”,故写此学习笔记,以待需要时查看。如若此文有助于解决你的问题,自然最好不过了。
问题描述:
在学习《python编程:从入门到实践》的过程中,将alien_invasion(外星人入侵)游戏项目使用pyinstaller打包时,虽然打包成功。但是alien_invasion.exe可执行exe出现闪退。
解决方案:
1.在命令行中,输入cd desktop\alien_invasion跳转到项目文件夹alien_invasion,然后输入pyinstaller -F alien_invasion.py按Enter键,如下图:
出现下图红线所示内容,项目打包成功,在项目文件夹的dist文件夹下可以找到alien_invasion.exe。
2.打开一个录制视频软件,本文用ScreenToGif录屏(由于alien_invasion.exe程序闪退,命令行输出看不到,导致难以发现具体问题。通过录屏可以查看命令行视频帧图片,从而发现问题,这是一个实用的本方法。)。双击alien_invasion.exe运行,alien_invasion.exe程序闪退之后,停止ScreenToGi视频录制,即可通过本软件查看命令行输出的导致程序闪退的具体问题,问题用红线标出。如下图所示:
3.将图片引用改为绝对路径,并在前面加r,代码示例如下:
self.image = pygame.image.load(r'C:\Users\lenovo\Desktop\alien_invasion\images\alien.bmp')
` 同理,修改ship类的飞船图片引用路径为绝对路径,并注意添加r。再次使用pyinstaller 打包,本次打包时使用命令:pyinstaller -F -w alien_invasion.py(-w可以避免程序启动时弹出命令行窗口)。即可生成可执行程序exe.,双击程序如下图所示:
至此,使用pyinstaller打包程序完成,可以尽情享受自己的游戏时光啦。