我正在尝试使用py2app打包混合的Python / C ++应用程序。我的setup.py是
from setuptools import setup
setup(app=['voxpopuli.py'],data_files=[],options=
{'py2app'{'argv_emulation':True}},setup_requires=['py2app'])
我通过
调用py2apppython setup.py py2app --no-strip --iconfile /Users/irving/otherlab/other/bin/OLicon.icns --resources /opt/local/lib/Resources/qt_menu.nib
这完成没有警告或错误,但当我尝试运行结果应用程序弹出一个简单的“voxpopuli Error”窗口。它有一个“打开控制台”按钮,但唯一的控制台消息是
9/21/12 11:43:14.691 AM voxpopuli[52765]: voxpopuli Error
9/21/12 11:43:15.926 AM com.apple.launchd.peruser.501[158]: ([0x0-0x177d77c].org.pythonmac.unspecified.voxpopuli[52765]) Exited with code: 255
是否有标准方法可以从py2app中获取更多信息以帮助诊断此错误?
答案 0 :(得分:3)
我认为这是应用程序的问题,而不是py2app
。
如果应用程序遇到未处理的异常,它将像这样退出。您使用的是哪个版本的osx?在10.8中,它们停止自动将stderr
转发到控制台,因此可能需要将应用程序stdout
和stderr
通过管道传输到文件中,以查看是否有堆栈跟踪。
虽然如果它是C ++部分中的错误,我猜你不会看到堆栈跟踪,但错误可能在应用程序的那一部分。
如果你真的找不到问题,请尝试从应用程序中删除大部分,直到它运行然后再添加位,直到它不运行,然后剥离等(如二进制搜索)尝试找到违规的部分。
答案 1 :(得分:3)
构建软件包后,您仍然可以从命令行运行“应用程序”。
例如,对于~/Projects/MyApp
内置到文件夹~/Projects/MyApp/dist
中的项目,您会发现可以从命令行运行以下内容:~/Projects/MyApp/dist/MyApp.app/Contents/MacOS/MyApp
这会将所有正常的stderr消息输出到控制台,以便您可以看到出错的地方。