一直试图弄清楚如何让 py2exe 更优雅地处理错误。基本上发生了两件奇怪的事情:
1)关闭程序后弹出消息=>要抑制(不显示)此弹出窗口
- 使用 try/except => 不起作用
2) 在 c:\Program Files\AppName\AppName.exe.log 中创建日志文件(有时写入此文件夹时出现权限错误)=> 将日志重定向到 c:\ProgramData
- 使用 sys.stdout 和 sys.stderr => 不起作用
我在想我可能只是将代码放在了错误的位置,并且 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()