【问题标题】:Joblib.load error: No module named 'scipy.sparse._csr'Joblib.load 错误:没有名为 \'scipy.sparse._csr\' 的模块
【发布时间】:2022-09-24 04:26:10
【问题描述】:
  • 蟒蛇版本:3.7(我必须使用这个版本)
  • 操作系统:Linux
  • 云平台:天蓝色
  • 资源:带有 python 的 Azure 函数
  • 目标:加载使用skit-learn 1.0.2 版创建的模型,并安装以下依赖项:

numpy:1.17.3 joblib:1.1.0 scipy:1.7.3

我正在使用 joblib 来加载我训练过的短剧学习模型(顺便说一下,我使用 python 3.9 在我的机器上本地创建了模型)。但是,我收到以下错误:

Traceback (most recent call last):
File \\\"/home/site/wwwroot/sortierung/__init__.py\\\", line 51, in main
prediction_file_path)
File \\\"/home/site/wwwroot/shared_code/custom_functions_prediction.py\\\", line 255, in predict
result.update(classify_mail(m,s,X, stop_words, model_folder_path))
File \\\"/home/site/wwwroot/shared_code/custom_functions_prediction.py\\\", line 105, in classify_mail
model = load(modelFilePath)
File \\\"/home/site/wwwroot/.python_packages/lib/site-packages/joblib/numpy_pickle.py\\\", line 587, in load
obj = _unpickle(fobj, filename, mmap_mode)
File \\\"/home/site/wwwroot/.python_packages/lib/site-packages/joblib/numpy_pickle.py\\\", line 506, in _unpickle
obj = unpickler.load()
File \\\"/usr/local/lib/python3.7/pickle.py\\\", line 1088, in load
dispatch[key[0]](self)
File \\\"/usr/local/lib/python3.7/pickle.py\\\", line 1385, in load_stack_global
self.append(self.find_class(module, name))
File \\\"/usr/local/lib/python3.7/pickle.py\\\", line 1426, in find_class
__import__(module, level=0)\\nModuleNotFoundError: No module named \'scipy.sparse._csr\'

我检查了安装的 scipy 文件夹,但找不到这个模块。我该如何解决这个问题?提前谢谢

标签: python azure azure-functions joblib


【解决方案1】:

要解决此ModuleNotFoundError: No module named 'scipy.sparse._csr' 错误,请尝试以下方法:

发生此错误是因为您在蟒蛇 3.9但运行它蟒蛇 3.7.

您可以尝试在蟒蛇 3.7或将 Azure Python 函数应用升级到特定版本的蟒蛇 3.9.

要将 Python 版本更改为 3.9,根据documentation

  • 您可以使用az functionapp config set 命令更新函数应用中的linuxFxVersion 设置。
az functionapp config set --name <FUNCTION_APP> \
--resource-group <RESOURCE_GROUP> \
--linux-fx-version "python|3.9"

参考:No module named 'scipy.sparse._csr'How to change python version of azure function

【讨论】:

  • 嗨@DeepDave-MT,非常感谢您的支持。正如你所说,错误是我用高版本的python创建了我的模型,当我想用​​低版本的python打开那个模型时,我得到了那个错误。我用 python 3.7 训练并加载了我的模型,它就像一个魅力。再次感谢
【解决方案2】:

我同意最后一个答案。

我用过蟒蛇 3.7.10scipy 1.8.1在本地 Windows 环境中转储带有 csr 矩阵的 dict。之后,在linux环境中加载文件蟒蛇 3.8.10scipy 1.7.1.

self.word_multi_model_feature = pickle.load(f_dict_feature) ModuleNotFoundError:没有名为“scipy.sparse._csr”的模块

您应该将加载 python 环境更改为与转储环境相同。

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2020-02-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2017-12-26
    • 2019-01-17
    • 2014-12-25
    • 2018-04-29
    相关资源
    最近更新 更多