mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 17:54:15 +08:00
PyInstaller windowed 启动器 (runw.exe, console=False) 不分配控制台, sys.stdout/stderr 为 None。desktop.py / main.py 的 logging.basicConfig 默认建 StreamHandler(sys.stderr), stderr 为 None 时首次写日志调用 None.write() 抛 AttributeError, 崩在导入早期, 进程被 OS 直接终止, try/except 都拦不住 → 用户看到「双击一闪退出、查无日志」。 修复: 1. _guard_streams() - 启动最早期把缺失的 stdout/stderr 换成丢弃写入的 _NullStream, 让 logging/reconfigure/print 全部安全落地 (windowed 标准修法) 2. _setup_logging() - 追加 FileHandler 到 data/desktop.log, console=False 下不再吞日志, 事后可查 3. _run_uvmicorn() - except Exception 捕获后端导入/运行崩溃并写 traceback, 不再静默死亡 (主线程只报「超时」却查无原因) 4. main() - except Exception 顶层兜底: 崩溃时 logger.exception + 弹原生 MessageBox 显示完整堆栈, 让用户能截图反馈 验证: console=False 包本地能正常打开 (修复前打不开)