在 OSX Yosemite 上打包 Kivy Python 应用程序不起作用

Posted

技术标签:

【中文标题】在 OSX Yosemite 上打包 Kivy Python 应用程序不起作用【英文标题】:Packaging Kivy Python applications on OSX Yosemite not working 【发布时间】:2015-09-03 06:19:10 【问题描述】:

我正在尝试使用 pyinstaller(OSX 10.10、Kivy 1.9、pyinstaller 2.1) 在 Yosemite 上打包 Kivy/Python 应用程序,但通过 Kivy OSX package how-to 并没有取得多大成功。在对我的 PYTHONPATH 进行故障排除以确保它包含 Kivy 和所有依赖项之后,我尝试构建他们的演示 touchtracer 应用程序,因为它已在示例中使用。

我为 OSX 构建的包中的任何内容都无法运行。控制台只是返回:

com.apple.xpc.launchd1: (com.apple.xpc.launchd.oneshot.0x10000017.mypython-app[15589]) 服务 以异常代码退出:255

据我所知,specfile 构建和 .app 包构建运行良好,除了在构建 specfile 时出现这两个不同的错误:

警告:未找到 ctypes 所需的库 user32.dll

然后是关于找不到 Python:

7246 ERROR: Can not find path @executable_path/../.Python (needed by /Applications/Kivy.app/Contents/Resources/python)
7246 INFO: Using Python library /System/Library/Frameworks/Python.framework/Versions/2.7/Python
7246 INFO: Adding Python library to binary dependencies
...
8489 ERROR: Can not find path @executable_path/../.Python (needed by /Applications/Kivy.app/Contents/Resources/python)

我认为这是路径的问题,但不确定它到底在寻找什么(除了 Python?)或如何解决这个问题。否则它会找到所有其他库就好了。有什么想法吗?

【问题讨论】:

为了记录,我通过kivy pyinstaller.py --windowed --name my_project my_project/main.py方法运行它,因为它需要在kivy环境中运行。 从未使用过 pyinstaller,我正在写 pyobjc-apps 并将它们与 py2app 捆绑在一起 - 也许这对你有用。不知何故。 deets,我在看那个。用它构建 kivy 应用程序似乎没有任何优先级,但我认为这绝对是一项工作。 看起来这是 pyinstaller 2.1 的问题。我尝试切换到 pyinstaller 2.0,它仍然无法正常工作,但原因完全不同。看起来降级版本解决了它正确找到 Kivy 和 Python 的问题,它显然是在构建时启动的。现在我的应用程序立即启动并坦克,在控制台中给出:6/17/15 1:37:24.996 PM com.apple.xpc.launchd[1]: (com.apple.ReportCrash[1360]) Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.ReportCrash 如果构建工作会很有趣,但 pyinstaller 2.0 使用了一些过时的“启动 API”。 【参考方案1】:

因此,即使我的应用程序仍然无法运行,但我已经从技术上回答了这个问题。无论出于何种原因,pyinstaller 2.1 都无法正确找到 Python 或 Kivy。当我下载 pyinstaller 2.0 并运行它时,一切正常。

我现在没有得到那些“找不到路径”错误,而是得到了看起来很开心的输出,比如

[INFO   ] [Logger      ] Record log in /Applications/Kivy.app/Contents/Resources/.kivy/logs/kivy_15-06-17_9.txt
4618 INFO: [Logger      ] Record log in /Applications/Kivy.app/Contents/Resources/.kivy/logs/kivy_15-06-17_9.txt
[INFO   ] [Kivy        ] v1.9.0
4617 INFO: [Kivy        ] v1.9.0
[INFO   ] [Python      ] v2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]
4618 INFO: [Python      ] v2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)]

所以现在我只需要排除故障并找出应用程序立即启动和崩溃的原因,并将其输出到控制台:

com.apple.xpc.launchd[1]: (com.apple.ReportCrash[1360]) Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.ReportCrash

我想这是另一个问题。

【讨论】:

以上是关于在 OSX Yosemite 上打包 Kivy Python 应用程序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 OSX 上打包 Kivy 应用程序时出错 - “bridge.h:没有这样的文件或目录”

从 OSX 为 Windows 创建 Kivy 包

如何在 OSX 10.10 Yosemite 上安装 xcode 5

在 OSX 10.10 Yosemite 上安装 Nokogiri

使用 PyCharm CE 在 Mac 10.10 Yosemite 上的 Kivy

在 OSX Yosemite 上安装 Python-Opencv