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

已安装sklearn但Flask API启动报错:ModuleNotFoundError求助

解决Flask API加载Pickle模型时的ModuleNotFoundError: No module named 'sklearn'问题

问题核心

报错原因是运行Flask的虚拟环境中未安装scikit-learn库。你提到已安装sklearn,但大概率是安装到了全局Python环境,而非项目专属的虚拟环境(报错路径明确显示使用的是venv\Scripts\python.exe)。另外注意:PyPI上的官方包名称是scikit-learn,直接安装sklearn只会得到一个无关的占位包,无法满足模型加载需求。

分步解决方案

  1. 激活项目虚拟环境
    在命令行中执行对应路径的激活命令:

    C:\Users\rohit\PycharmProjects\PlacePredictor\venv\Scripts\activate
    

    激活成功后,命令行前缀会显示(venv)标识。

  2. 在虚拟环境中安装scikit-learn
    执行标准安装命令:

    pip install scikit-learn
    

    如果你的模型是用特定版本的scikit-learn训练的,建议安装对应版本避免兼容性问题:

    pip install scikit-learn==x.x.x
    

    (将x.x.x替换为训练模型时使用的具体版本号)

  3. 验证安装结果
    执行以下命令确认scikit-learn已成功安装:

    pip list | findstr scikit-learn
    

    (Windows系统用findstr,Linux/macOS环境替换为grep)

额外代码优化提示

你的predict函数中,request.form.get()获取的参数是字符串类型,直接传入numpy数组会导致模型预测报错,需要先转换为数值类型:

@app.route('/predict', methods=['GET', 'POST'])
def predict():
    try:
        cgpa = float(request.form.get('cgpa'))
        iq = float(request.form.get('iq'))
        profile_score = float(request.form.get('profile_score'))
    except (TypeError, ValueError):
        return jsonify({'error': '请输入有效的数值类型参数'}), 400

    input_query = np.array([[cgpa, iq, profile_score]])
    result = model.predict(input_query)[0]
    return jsonify({'placement': str(result)})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:07:19