Macos 如何在OSX上的py2app冻结wxpython应用程序中尽早报告错误,

Macos 如何在OSX上的py2app冻结wxpython应用程序中尽早报告错误,,macos,wxpython,py2app,Macos,Wxpython,Py2app,我正在使用py2app冻结一个python应用程序,以便在OSX下分发它 对于Windows,我使用bbfreeze,它有一个选项说“保持控制台在附近”。这在调试情况下非常有用,可以在未安装python的用户机器上的应用程序启动早期捕获异常 我需要知道如何在OSX中为py2app执行此操作 我试过wx.App(True),但这样创建的窗口无法保持打开状态 我如何构造我的wxpython应用程序,使其始终可以看到启动时可能出现的任何错误消息 谢谢 py2app的文档确实介绍了如何显示控制台。见下文

我正在使用py2app冻结一个python应用程序,以便在OSX下分发它

对于Windows,我使用bbfreeze,它有一个选项说“保持控制台在附近”。这在调试情况下非常有用,可以在未安装python的用户机器上的应用程序启动早期捕获异常

我需要知道如何在OSX中为py2app执行此操作

我试过wx.App(True),但这样创建的窗口无法保持打开状态

我如何构造我的wxpython应用程序,使其始终可以看到启动时可能出现的任何错误消息


谢谢

py2app的文档确实介绍了如何显示控制台。见下文:

当我将应用程序放在客户机上时,我通常不希望在应用程序中使用命令窗口。这通常会激怒客户。相反,我将使用Python的日志模块创建日志文件。您可以在调用wxPython代码之前创建logger对象,只需传入logger即可。大概是这样的:

frame = MyFrame(logger)
然后您可以捕获错误消息并将其记录到日志文件中。为了防止日志文件变得过大,我建议创建一个旋转日志。有关更多信息,请参阅文档:


似乎还有另一种在Mac上创建应用程序包的方法,这是我从未听说过的。它被称为。您可能还想检查一下。

是的,通常不希望客户机上有命令窗口。然而,当遇到问题时,我正在努力解决如何抓住斯特德。在Windows中,这被证明是“保持命令窗口在那里”。。。stderr出现在其中。一旦wx启动,就很容易确保他们看到任何错误,正如您所说的。问题是如果wx出现之前出现了问题。我尝试重定向stderr:f=open(“errors.txt”,w);sys.stderr=f;呕吐;但这并没有什么乐趣:它在windows下工作,但在Mac上,我无法从冻结应用程序“errors.txt”中的“barf”中获得回溯。这就是我建议使用日志模块的原因。您可以使用try/except来包装这个麻烦点,然后在异常中执行以下操作:mylogger.exception(“发生了异常!”)。日志模块将写出您的自定义消息,并回溯到日志文件。您所说的一切都是正确的。谢谢这让我渡过了难关!(即使是重新阅读如何在Mac上显示控制台的基本建议,doh!)