以下是我一直面临的问题的一些建议:
- 尝试打包 example app Kivy 自带的。
- 我可以通过命令行 [kivy main.py] 正常运行应用程序
- 当我尝试使用 Pyinstaller 打包应用程序时,生成了规范文件,并且可以打包应用程序,但这是我在警告文本文件中看到的:http://pastebin.com/3D2A9ZLG
- 之后应用无法启动,这是我在控制台日志中看到的错误:
(com.apple.xpc.launchd.oneshot.0x10000028.day2[6584]) 服务异常退出代码:1
Kivy 安装
- 使用下载时附带的 DMG 在 Mac OS X Yosemite 上安装了 Kivy 1.9.0。并使用 sudo 用户运行 MakeSymbols 脚本。
- Kivy 目前安装在 Applications 文件夹中
- 通过从他们的 Github 存储库下载代码并运行
kivy pyinstaller --windowed --name guide main.py
使用 Pyinstaller 2.0
- 我正在使用 Python 2.7
代码:
这是我尝试使用示例创建的应用程序的规范文件:
# -*- mode: python -*-
from kivy.tools.packaging.pyinstaller_hooks import install_hooks
install_hooks(globals())
a = Analysis(['/Users/karthik/Desktop/SHRINK/kivy/examples/guide/quickstart/main.py'],
pathex=['/Users/karthik/Desktop/SHRINK/pyinstaller-2.0'],
hiddenimports=[])
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=1,
name=os.path.join('build/pyi.darwin/day2', 'day2'),
debug=False,
strip=None,
upx=True,
console=False )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=False,
name=os.path.join('dist', 'day2'))
app = BUNDLE(coll,
name=os.path.join('dist', 'day2.app'))
任何帮助将不胜感激。
最佳答案
我可以看到几个问题,您正在使用 os 库而不导入它,这应该会导致一些问题,根据此处:(http://kivy.org/docs/guide/packaging-windows.html)您需要在 COLLECT 语句中包含路径,以便 kivy 可以找到一切。
coll = COLLECT( exe, Tree('../kivy27/examples/demo/touchtracer/'),
a.binaries, Tree([f for f in os.environ.get('KIVY_SDL2_PATH', '').split(';') if 'bin' in f][0])
#...
)
Kivy 1.9.0 也使用 SDL2 而不是 Pygame,因此您还需要将 pyinstaller 链接到它。根据我的经验,Kivy 在使用 Pyinstaller 时非常喜怒无常,因此我建议尝试点击我在上面发布的链接。
关于python - 使用 pyinstaller 打包后 Kivy 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31260377/