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

2024-04-05

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

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

  • Use try/except => doesn't work
    • http://osdir.com/ml/python.py2exe/2006-09/msg00016.html http://osdir.com/ml/python.py2exe/2006-09/msg00016.html
    • 不确定将此代码放在哪里

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

  • Use sys.stdout and sys.stderr => doesn't work
    • http://www.dreamincode.net/forums/topic/234318-py2exe-do-not-show-errors-occurred-prompt-to-user/ http://www.dreamincode.net/forums/topic/234318-py2exe-do-not-show-errors-occurred-prompt-to-user/
    • 不确定将此代码放在哪里

我想我可能只是将代码放在了错误的位置,并且 py2exe 引导代码在我设置完这些代码后启动,但我不确定。我尝试在生成错误日志之前将此代码放入其中,但它仍然会转到 py2exe 将它们引导到的位置(StdErr 对象)


我的程序结构如下

src/
  python/
    gui/
      __main__.py

main.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()

这是旧帖子,但仍然有人可以方便地找到它。 您可以通过设置记录器传播来禁用这个烦人的弹出窗口

logger.propagate = False

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

py2exe\boot_common.py
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

py2exe 错误处理重定向和弹出窗口 的相关文章

随机推荐