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

无法加载含稀疏矩阵列表的Pickle文件:ModuleNotFoundError报错求助

问题描述

我尝试打开一个包含稀疏矩阵列表的Pickle文件,该文件此前多次使用均无问题,但现在出现以下错误:

ModuleNotFoundError: No module named 'scipy.sparse._arrays'

环境信息

  • 系统:Windows
  • 工具:Anaconda + Jupyter Notebook
  • Scipy版本:1.12.0、1.13.0(均出现问题,已多次卸载重装无效)

导入代码

import pickle
from scipy.sparse import csr_matrix
解决方法

1. 强制重装Scipy并清除缓存

打开Anaconda Prompt,激活你的工作环境,执行以下命令彻底重装,避免缓存问题:

# pip方式
pip uninstall -y scipy
pip install scipy --no-cache-dir

# 或conda方式
conda uninstall -y scipy
conda clean --all
conda install scipy

2. 验证Scipy模块完整性

在Jupyter Notebook中运行以下代码,确认scipy.sparse._arrays模块是否存在:

import scipy
print(scipy.__version__)
try:
    import scipy.sparse._arrays
    print("模块加载成功")
except ModuleNotFoundError as e:
    print(e)

如果仍报错,说明安装包损坏,建议换镜像源重新安装,比如用conda指定清华源:

conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free scipy

3. 修复Pickle文件版本兼容性

该错误大概率是因为Pickle文件由旧版本Scipy保存,新版本Scipy内部模块结构变更导致无法识别。可以通过旧版本Scipy重新保存文件:

  • 创建临时conda环境安装旧版Scipy:
conda create -n scipy_old python=3.10 scipy=1.11.4
conda activate scipy_old
  • 在该环境的Jupyter中加载并重新保存文件:
import pickle
from scipy.sparse import csr_matrix

# 加载旧文件
with open("你的旧文件.pkl", "rb") as f:
    sparse_matrices = pickle.load(f)

# 用高协议重新保存
with open("修复后的文件.pkl", "wb") as f:
    pickle.dump(sparse_matrices, f, protocol=pickle.HIGHEST_PROTOCOL)

之后回到原环境加载修复后的文件即可。

4. 确认Jupyter内核与环境匹配

有时候Jupyter使用的内核和安装Scipy的环境不一致,执行以下代码查看当前环境的Scipy路径:

import scipy
print(scipy.__file__)

如果路径和你的工作环境不符,重新关联内核:

conda activate 你的工作环境
pip install ipykernel
python -m ipykernel install --user --name=你的环境名称

然后在Jupyter Notebook中切换到对应的内核。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:52:37