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

Jupyter Notebook读取pickle报EOFError但Python解释器正常

Jupyter Notebook读取Pickle文件触发EOFError的排查方案

问题背景

使用名为ai的conda环境同时进行Shell命令行和Jupyter Notebook数据分析:

  • 67M的pickle文件,在激活ai环境的Shell中执行df = pd.read_pickle("file.pickle")可正常加载
  • 同一环境的Jupyter Notebook中执行相同代码,抛出EOFError: Ran out of input,完整报错栈如下:
---------------------------------------------------------------------------
EOFError                                  Traceback (most recent call last)
/tmp/ipykernel_8405/3858244629.py in 
----> 1 df = pd.read_pickle("file.pickle")

~/miniconda3/envs/ai/lib/python3.8/site-packages/pandas/io/pickle.py in read_pickle(filepath_or_buffer, compression, storage_options)
    215                     # RawIOBase, BufferedIOBase, TextIOBase, TextIOWrapper, mmap]";
    216                     # expected "IO[bytes]"
--> 217                     return pickle.load(handles.handle)  # type: ignore[arg-type]
    218             except excs_to_catch:
    219                 # e.g.

EOFError: Ran out of input

核心原因分析

  1. 工作目录不一致:Jupyter Notebook的默认工作目录和Shell当前目录不同,导致读取的是一个空文件或同名的其他无效文件(空文件会直接触发EOFError)
  2. 文件读取异常:Jupyter进程对目标pickle文件的读取权限不足,或者读取时文件被其他进程占用、截断,导致读取内容不完整
  3. 内核环境缓存:Jupyter内核未正确加载ai环境的依赖,或pickle/pandas模块存在隐性版本差异(虽然环境名称相同,但内核可能缓存了旧版本依赖)
  4. 内存限制并非诱因:67M文件远低于Jupyter默认内存阈值,不会因内存不足触发该错误

排查与解决步骤

  • 确认工作目录:在Notebook中执行以下命令查看当前工作目录,对比Shell中pwd的输出:
    !pwd
    
    若目录不一致,使用文件绝对路径读取:
    import pandas as pd
    # 替换为你的文件绝对路径
    df = pd.read_pickle("/full/path/to/your/file.pickle")
    
  • 验证文件完整性:在Notebook中检查文件大小,确认是否为67M:
    !ls -lh file.pickle
    
    若文件远小于预期,说明读取了错误文件,需修正路径
  • 重置Jupyter内核:关闭当前Notebook的内核,重新启动后再次尝试读取,可解决内核缓存导致的环境异常
  • 检查文件权限:查看文件权限,确保Jupyter运行用户有读取权限:
    !ls -l file.pickle
    
    若权限不足,添加读取权限:
    !chmod +r file.pickle
    
  • 重新生成Pickle文件:若上述步骤无效,在Shell中重新导出文件后再尝试读取:
    # Shell中执行
    df = pd.read_pickle("file.pickle")
    df.to_pickle("file_fixed.pickle")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:05:34