taojy123 / KeymouseGo

类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input
http://taojy123.github.io/KeymouseGo
GNU General Public License v2.0
7.15k stars 1.04k forks source link

使用-w方式打包会报错 #194

Closed fldsjls closed 1 year ago

fldsjls commented 1 year ago

屏幕截图 2022-12-17 213716 最后我尝试使用传统的-c打包方式可以运行

nAnderYang commented 1 year ago
Traceback (most recent call last):
  File "KeymouseGo.py", line 11, in <module>
  File "C:\Users\nAnder\AppData\Local\Temp\embedded.p6rbo2qm.zip\shibokensupport\__feature__.py", line 142, in _import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "UIFunc.py", line 41, in <module>
  File "loguru\_logger.py", line 830, in add
TypeError: Cannot log to objects of type 'NoneType'
bingfengfeifei commented 1 year ago

问题出在UIFunc.py的41行

logger.add(sys.stdout, backtrace=True, diagnose=True, level='DEBUG')

该行是给DEBUG调试logger添加一个handler,但是输出的目标是stdout。 而使用-w打包的时候纯GUI程序的sys.stdout是None,所以出现了该错误,在打包GUI程序的时候可以将该行注释掉,或者通用一点的做法这句话修改为

if sys.stdout is not None:
    logger.add(sys.stdout, backtrace=True, diagnose=True, level='DEBUG')

在不为None的时候再添加handler

nAnderYang commented 1 year ago

@bingfengfeifei 多谢 学习了 问题解决