Pycaret 2.3.4调用models()方法触发NameError报错如何解决?
PyCaret 2.3.4 调用
models()报NameError: name 'logger' is not defined的解决方案 错误原因
该问题是PyCaret 2.3.4版本的已知源码缺陷,内部tabular.py文件的models函数中,日志输出代码提前调用了未初始化的logger变量导致,不涉及环境配置问题。
可行解决方案
方案1:直接修改源码修复(立即生效,无需更换版本)
打开报错提示的路径/home/user/.local/lib/python3.8/site-packages/pycaret/internal/tabular.py,定位到第9494行的代码:logger.info(f"gpu_param set to {gpu_param}")直接注释掉该行即可,该日志输出不影响核心功能,注释后运行代码不会再有报错。
如果你不想删掉日志,也可以在该行上方补充logger初始化代码:import logging logger = logging.getLogger(__name__)方案2:升级到2.x分支稳定版本
如果你没有强制使用2.3.4版本的需求,直接升级到2.x系列最终修复版2.3.10即可,该版本已经官方修复了这个bug:pip install pycaret==2.3.10方案3:传参规避触发报错
调用models()函数时显式传入gpu=False参数,部分场景下可以跳过触发有问题的日志代码:from pycaret.regression import * models(gpu=False)
验证方法
修复完成后执行以下代码,正常返回支持的回归模型列表即表示修复成功:
from pycaret.regression import * models()
内容的提问来源于stack exchange,提问作者EanX
相关产品推荐
相关产品推荐

