尝试编译后,Python/Kivy 应用程序不会启动
Posted
技术标签:
【中文标题】尝试编译后,Python/Kivy 应用程序不会启动【英文标题】:After attempted compile, Python/Kivy application won't launch 【发布时间】:2018-07-03 17:07:41 【问题描述】:我创建了一个我正在尝试编译的程序,但是在编译完成后我尝试从 /dist/ 目录中的 .exe 启动应用程序,它会创建一个命令提示符窗口,打开应用程序窗口片刻,然后关闭。
我已按照 Kivy 程序添加正确的导入,并将必要的目录添加到规范的 COLLECT 区域。我尝试将 pyinstaller 钩子导入添加到顶部,正如一些人在各个页面上推荐的那样,但无济于事。
应用程序在测试过程中通过命令“python main.py”正常启动,所以我很困惑为什么它在编译后没有启动。
规格:
# -*- mode: python -*-
from kivy.deps import sdl2, glew
block_cipher = None
a = Analysis(['..\\main.py'],
pathex=['C:\\python programs\\Escape Room Program\\compiled'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
**get_deps_all())
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='EskapAid',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe, Tree('..\\compiled'),
a.binaries,
a.zipfiles,
a.datas,
Tree('..\\img\\', 'img'),
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
strip=False,
upx=True,
name='EskapAid')
我不介意在必要时提供任何其他信息,包括我可能采取的其他步骤,但目前,我很困惑为什么它没有正确启动。
【问题讨论】:
【参考方案1】:尝试从控制台运行应用程序,以便查看与启动失败相关的错误消息;如果单击 .exe 打开它,应用程序一关闭,控制台就会消失,这使得很难看到这些错误。您很可能会看到应用程序无法启动,因为它缺少包,您可以将其添加到 hiddenimports 列表下的 .spec 文件中。查看此post,了解为何需要这样做。
【讨论】:
我运行代码查看错误,并使用屏幕截图软件,我能够找出错误是什么。原来,这是一个文件读取错误,因为它没有找到需要与之打包的文件。以上是关于尝试编译后,Python/Kivy 应用程序不会启动的主要内容,如果未能解决你的问题,请参考以下文章
Python - Kivy - Python 在安装 kivy 期间停止工作
在移动设备上运行 apk 后,python kivy android 应用程序崩溃