使用PyInstaller打包游戏时弹出窗口却未生成exe且报错求助
问题描述
执行打包命令 pyinstaller platform.py --onefile -w 后:
- 游戏弹窗正常弹出且可正常游玩
- 进入dist文件夹后未找到生成的exe文件
- 关闭游戏后出现如下回溯报错:
E:\Sublime Text 3\Projects>pyinstaller platform.py --onefile -w 51 INFO: PyInstaller: 5.2 51 INFO: Python: 3.10.5 58 INFO: Platform: Windows-10-10.0.22000-SP0 59 INFO: wrote E:\Sublime Text 3\Projects\platform.spec 60 INFO: UPX is not available. 61 INFO: Extending PYTHONPATH with paths ['E:\\Sublime Text 3\\Projects'] pygame 2.1.2 (SDL 2.0.18, Python 3.10.5) Hello from the pygame community. https://www.pygame.org/contribute.html And then after I quit my game this comes in Traceback (most recent call last): File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\Scripts\pyinstaller.exe\__main__.py", line 7, in <module> File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\__main__.py", line 178, in run run_build(pyi_config, spec_file, **vars(args)) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\__main__.py", line 59, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\building\build_main.py", line 842, in main build(specfile, distpath, workpath, clean_build) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\building\build_main.py", line 764, in build exec(code, spec_namespace) File "E:\Sublime Text 3\Projects\platform.spec", line 7, in <module> a = Analysis( File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\building\build_main.py", line 287, in __init__ self.hookspath += discover_hook_directories() File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\isolated\_parent.py", line 269, in wrapped return call(function, *args, **kwargs) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\isolated\_parent.py", line 238, in call return isolated.call(function, *args, **kwargs) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\isolated\_parent.py", line 176, in call raise RuntimeError(f"Child process call to {function.__name__}() failed with:\n" + output) RuntimeError: Child process call to discover_hook_directories() failed with: File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\isolated\_child.py", line 63, in run_next_command output = function(*args, **kwargs) File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\building\build_main.py", line 105, in discover_hook_directories from PyInstaller.log import logger File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\__init__.py", line 17, in <module> from PyInstaller import compat File "C:\Users\Manny\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\compat.py", line 42, in <module> is_win_10 = is_win and (platform.win32_ver()[0] == '10') AttributeError: module 'platform' has no attribute 'win32_ver'
问题原因
你的游戏脚本文件名是platform.py,和Python标准库中的platform模块重名了。PyInstaller在打包过程中需要调用标准库的platform.win32_ver()方法,但它错误地导入了你的游戏脚本而非标准库模块,导致找不到对应的属性,最终打包失败,所以dist文件夹里没有生成exe文件。
解决步骤
- 重命名你的游戏脚本,比如改为
platform_game.py(确保文件名不与Python标准库模块名重复) - 删除打包生成的临时文件:包括
platform.spec文件、build文件夹、dist文件夹 - 重新执行打包命令:
pyinstaller platform_game.py --onefile -w
内容的提问来源于stack exchange,提问作者NimbusDesu
相关产品推荐
相关产品推荐

