使用 py2app 捆绑 PyQt5 应用程序:不断收到"Abort trap: 6"错误



我正试图用以下代码创建一个OSX应用程序:

import sys
from PyQt5.QtWidgets import QApplication
if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.lastWindowClosed.connect(app.quit)
    sys.exit(app.exec_())

我在OS X 10.10中使用Python 2.7.9中的py2app(0.9.1)和PyQt5(5.4.0)。这个应用程序似乎构建得很好。启动应用程序后,它立即崩溃,并显示"中止陷阱:6"。

我尝试过使用py2applet创建的默认setup.py,也尝试过直接从py2aApplet生成应用程序。python文件本身运行时不会崩溃。

如有任何想法/帮助,我们将不胜感激!

导入QApplication,然后尝试使用包名实例化它:QtWidgets.QApplication除此之外,我使用了以下setup.py,它成功了:

from setuptools import setup
setup(
app=["MyApplication.py"],
setup_requires=["py2app"],
)

运行命令python3 setup.py py2app -A --packages=PyQt5生成了一个工作应用程序。当您遇到错误时,请检查Console是否有任何输出。这在调试时会有所帮助。

顺便说一句,当我打包PyQt应用程序时,我通常也会复制任何Qt插件,并运行macdeployqt工具来修复链接。:

cp -R /Developer/Qt/5.3/clang_64/plugins/ dist/MyApplication.app/Contents/PlugIns
macdeployqt dist/MyApplication.app

在解决这个问题一段时间后,我无法找到解决方案,于是我切换到PyInstaller,它为我提供了开箱即用的PyQt 5.6。我在一篇博客文章中详细介绍了我的一些发现,以及为什么我最终选择了PyInstaller而不是其他可用的冷冻柜。

最新更新