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

时间:2015-03-27 19:45:58

标签: python pyqt py2app pyqt5

我正在尝试使用以下代码创建OS X应用程序:

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)。该应用程序似乎建立得很好。启动应用程序后,它会立即崩溃并显示“Abort trap:6”。

我尝试使用py2applet创建的默认setup.py以及直接从py2applet生成应用程序。 python文件本身运行时没有崩溃。

非常感谢任何想法/帮助!

2 个答案:

答案 0 :(得分:2)

您导入QApplication然后尝试使用包名称实例化它:QtWidgets.QApplication除此之外,我使用了以下setup.py并且它有效:

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

运行命令python3 setup.py py2app -A --packages=PyQt5生成了一个有效的应用程序。当您收到错误时,请检查控制台是否有任何输出。这可以在调试时提供帮助。

作为旁注,当我打包PyQt应用程序时,我通常还会复制任何Qt插件并运行macdeployqt工具来修复链接。:

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

答案 1 :(得分:1)

经过一段时间的努力解决这个问题而无法找到解决方案之后,我切换到了PyInstaller,这对我来说是开箱即用的PyQt 5.6.1。我详细介绍了一些我的发现以及为什么我最终选择了PyInstaller而不是blog post中的其他可用冰柜。