python logging模块报错AttributeError:

完整报错

Traceback (most recent call last):
  File "logging\__init__.py", line 1113, in emit
AttributeError: 'NoneType' object has no attribute 'write'
Call stack:
  File "threading.py", line 995, in _bootstrap
  File "threading.py", line 1038, in _bootstrap_inner
  File "threading.py", line 975, in run
  File "PackEntry.py", line 129, in pack_apk
  File "log_utils.py", line 43, in info
  File "logging\__init__.py", line 1489, in info
  File "logging\__init__.py", line 1634, in _log
  File "logging\__init__.py", line 1644, in handle
  File "logging\__init__.py", line 1706, in callHandlers
  File "logging\__init__.py", line 978, in handle
  File "logging\__init__.py", line 1118, in emit

我在pycharm本地运行python程序并不会报错,但是用pyinstaller打包exe文件后就报错了,这个logging模块的报错困扰了我很久,但是一直找不到解决办法,,,

模块代码

这个是我初始化logging模块的代码:

logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
current_time = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M')
log_file = os.path.join(getCurrDir()+"/log", '{}.log'.format(current_time))
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)

创建了一个名为 "mylogger" 的 Logger 对象,并设置了日志级别为 DEBUG。然后,创建了一个文件处理器 file_handler,将其级别设置为 DEBUG,并将其添加到 Logger 对象中。您还创建了一个控制台处理器 console_handler,将其级别设置为 DEBUG,并将其添加到 Logger 对象中。  嗯代码看起来没有问题。

解决思路

无意中找到这个解决方案~ Error Shows to me when i execute my exe of my kivy app

python logging模块报错AttributeError:

查看下我的pyinstaller版本——5.13.0,好家伙,直接重新安装:

  1. 卸载当前安装的 PyInstaller:
pip uninstall pyinstaller

  1. 安装特定版本的 PyInstaller:

pip install pyinstaller==5.6.2


打包-运行-问题解决!