You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python加载pickle模型报找不到sklearn.linear_model模块错误解决

问题描述

搭建班加罗尔房价预测简易机器学习网页项目时,调用pickle.load()加载本地存储的预训练模型文件抛出模块不存在错误,手动在代码中导入对应模块后PyCharm仍无法识别,错误信息如下:

Traceback (most recent call last):
  File "C:\Code\BHP\server\util.py", line 30, in <module>
    load_saved_artifacts()
  File "C:\Code\BHP\server\util.py", line 24, in load_saved_artifacts
    __model = pickle.load(f)
ModuleNotFoundError: No module named 'sklearn.linear_model'

Process finished with exit code 1

当前util.py代码如下:

import json
import pickle


__locations = None
__data_columns = None
__model = None


def get_location_names():
    return __locations


def load_saved_artifacts():
    print("loading saved artifacts...start")
    global __data_columns
    global __locations

    with open("./artifacts/columns.json", 'r') as f:
        __data_columns = json.load(f)["data_columns"]
        __locations = __data_columns[3:]

    with open("./artifacts/banglore_home_prices_model.pickle", 'rb') as f:
        __model = pickle.load(f)

    print("Loading saved artifacts... Done.")


if __name__ == '__main__':
    load_saved_artifacts()
    print(get_location_names())

项目配套columns.json存储了模型训练用到的房屋面积、卫生间数、卧室数、班加罗尔各区位名称等特征字段。

报错原因

这个错误本质是当前运行代码的Python环境里,没有模型序列化时依赖的scikit-learn对应组件,常见诱因有三个:

  • 装错包:直接执行pip install sklearn安装的是早就废弃的占位空包,根本不是正式的scikit-learn机器学习库
  • 环境不匹配:PyCharm选中的Python解释器,和终端里安装依赖用的解释器不是同一个环境,包装到了A环境,跑代码用的B环境,自然找不到模块
  • 版本不兼容:本地安装的scikit-learn版本和训练这个pickle模型时用的版本差异过大,内部模块结构调整,加载时找不到对应路径
可行解决方案

按顺序排查操作即可:

  1. 先对齐解释器环境
    查看PyCharm窗口右下角显示Python版本的区域,点击确认当前选中的解释器是项目所用的虚拟环境/目标系统Python,不要选到其他conda环境、WSL环境或其他项目的独立虚拟环境。
  2. 清理错误包,安装匹配版本的依赖
    打开PyCharm底部的Terminal标签,确认终端输入行最前面括号内的环境名和刚才选中的解释器一致后,依次执行以下命令:
    pip uninstall -y sklearn
    pip install scikit-learn==1.0.2
    
    指定1.0.2版本是为了和教程训练模型时的scikit-learn版本对齐,避免跨大版本带来的加载兼容问题
  3. 验证安装后重试
    Windows系统在终端执行pip list | findstr scikit-learn,能查到版本号为1.0.2的scikit-learn条目即说明安装正确。回到代码开头补上import sklearn.linear_model,等PyCharm后台索引完成(状态栏进度条跑完),再运行util.py即可正常加载模型。
  4. 以上步骤操作后仍报错的,检查模型文件完整性
    进入项目artifacts目录查看banglore_home_prices_model.pickle的文件大小,正常该模型文件大小在几百KB到1MB区间,如果文件只有几KB,说明下载过程中文件损坏,替换为完整的模型文件即可。

内容的提问来源于stack exchange,提问作者Yun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:18:30