zhangauckland 2020-08-24 10:08 采纳率: 0%
浏览 725
已采纳

如何解决pyinstaller生成的.exe文件闪退的问题?

我是一名Python的初学者。学习了《Python编程:从入门到实践》教材后,已能在自己的电脑上顺利运行alien_invasion游戏。现在想将其打包生成.exe文件,以便在其他电脑上运行。但一直没有成功。打包过程如下:
首先使用:pyi-makespec alien_invasion.py生成alien_invasion.spec。
打开这个.spec文件,编辑如下:
SETUP_DIR = 'C:\Users\***\AppData\Local\Programs\Python\Python38\alien_invasion\'
a = Analysis(['alien_invasion.py',
'alien.py',
'bullet.py',
'button.py',
'game_functions.py',
'game_stats.py',
'scoreboard.py',
'settings.py',
'ship.py'],
pathex=['c:\Users\***\AppData\Local\Programs\Python\Python38\alien_invasion'],
binaries=[],
datas=[(SETUP_DIR+'images','images')],
hiddenimports=[],
......
编辑的内容:添加了alien.py等8个.py文件;在datas处添加了imgages文件夹。
感觉在hiddenimports处应该也添加内容,但我不知道如何添加?这会是导致.exe不能运行的原因?
编辑这个.spec文件后保存。然后使用:pyinstaller alien_invasion.spec生成alien_invasion.exe文件。当执行alien_invasion.exe时,先是出现一个小的黑窗口,然后出现一个大的黑窗户,然后就闪退了。
烦请各位大侠能不吝赐教,不胜感激!

  • 写回答

2条回答 默认 最新

  • jingluan666 2020-08-24 16:27
    关注

    这个因为缺少images文件夹,手动拷贝过去

    将spec的exe和collect改成如下:

    exe = EXE(pyz,
              a.scripts,
              [],
              exclude_binaries=True,
              name='alien_invasion',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              console=True )
    
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   name='alien_invasion')
    

    生成后文件夹内容如下:

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发