py2exe错误处理重定向和弹出窗口

时间:2013-09-16 19:20:59

标签: python py2exe

试图找出如何让py2exe更优雅地处理错误。基本上发生了两件奇怪的事情:

1)关闭程序后弹出消息=>想要压制(不显示)这个弹出窗口

2)在c:\ Program Files \ AppName \ AppName.exe.log中创建日志文件(有时写入此文件夹时有权限错误)=>将日志重定向到c:\ ProgramData

我想我可能只是将代码放在错误的位置并且py2exe引导程序代码在我设置它们之后触发但我不确定。我已经尝试在生成错误日志之前放置此代码,但它仍然会进入py2exe引导它们到的地方(StdErr对象)


我的程序结构如下

src/
  python/
    gui/
      __main__.py

主要的.py

if __name__ == "__main__":
    # Redirect py2exe log to somewhere else if windows
    if hasattr(sys,"frozen") and sys.frozen in ("windows_exe", "console_exe"):
        stdout_file = "c:\ProgramData\AppName\out.log"
        stderr_file = "c:\ProgramData\AppName\err.log"
        sys.stdout = open(stdout_file, "w")
        sys.stderr = open(stderr_file, "w")
    try:
        gui = AppNameGui()
        gui.main()
    except:
        traceback.print_exc()

2 个答案:

答案 0 :(得分:4)

这是老帖子但是,有人可以发现它很方便。 您可以通过设置记录器传播

来禁用这个烦人的弹出窗口
logger.propagate = False

原因是记录器没有传播输出到控制台。 有关更多详细信息,请查看py2exe包中的源代码:

py2exe\boot_common.py

答案 1 :(得分:1)

我遇到问题,其中一个import出错了,就在我的文件顶部。我必须将stdout / stderr重定向放在文件顶部,以确保日志不会像py2exe那样创建。