一直试图弄清楚如何让py2exe更优雅地处理错误.基本上发生了两件奇怪的事情:
1)关闭程序后弹出消息=>想要抑制(不显示)此弹出窗口
2)在c:\ Program Files\AppName\AppName.exe.log中创建日志文件(有时写入此文件夹有权限错误)=>将日志重定向到c:\ ProgramData
我想我可能只是将代码放在错误的位置并且py2exe引导程序代码在我设置它们之后触发但我不确定.我已经尝试在生成错误日志之前放置此代码,但它仍然会进入py2exe引导它们到的地方(StdErr对象)
我的程序结构如下
src/
python/
gui/
__main__.py
Run Code Online (Sandbox Code Playgroud)
主 .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()
Run Code Online (Sandbox Code Playgroud)
这是旧帖子,但仍然有人可以方便地找到它。您可以通过设置记录器传播来禁用这个烦人的弹出窗口
logger.propagate = False
Run Code Online (Sandbox Code Playgroud)
原因是记录器没有将输出传播到控制台。有关更多详细信息,请检查 py2exe 包中的源代码:
py2exe\boot_common.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |