使用pyinstaller打包后,Kivy应用程序崩溃了

时间:2015-07-07 05:27:13

标签: python macos kivy pyinstaller

以下是我一直面临的问题的一些指示:

  • 尝试打包Kivy附带的example app
  • 我可以通过命令行[kivy main.py]
  • 正常运行应用程序
  • 当我尝试使用Pyinstaller打包应用程序时,会生成规范文件,并且可以打包应用程序,但这是我在警告文本文件中看到的:http://pastebin.com/3D2A9ZLG
  • 之后该应用无法启动,这是我在控制台日志中看到的错误:(com.apple.xpc.launchd.oneshot.0x10000028.day2[6584]) Service exited with abnormal code: 1

Kivy安装

  • 使用下载附带的DMG在Mac OS X Yosemite上安装Kivy 1.9.0。并使用sudo用户运行MakeSymbols脚本。
  • Kivy目前已安装在“应用程序”文件夹
  • 通过从Github仓库下载代码并运行kivy pyinstaller --windowed --name guide main.py
  • 来使用Pyinstaller 2.0
  • 我正在使用Python 2.7

代码:

这是我尝试使用示例创建的应用程序的spec文件:

# -*- 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'))

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我可以看到一些问题,你使用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工作很温和,因此我建议您尝试按照我上面发布的链接。