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

使用datasets.load_dataset加载本地JSON报LZMADecompressor属性错误如何解决

问题根因定位

报错核心为AttributeError: '_lzma.LZMADecompressor' object has no attribute 'needs_input',由两个叠加问题导致:

  1. 你使用的Python3.7内置lzma模块的_LZMADecompressor类没有needs_input属性,该属性为Python3.8及以上版本新增特性
  2. 你自定义的加载脚本load_datasets.py中对本地未压缩JSON文件调用了dl_manager.download_and_extract方法,该方法会默认尝试识别文件是否为压缩包,触发了lzma解压校验逻辑
排查与解决步骤
  • 优先方案:修改自定义数据集加载脚本
    你加载的是本地未压缩JSON文件,无需调用解压相关逻辑,直接把load_datasets.py中_split_generators方法里的data_dir = dl_manager.download_and_extract(data_path)替换为直接读取本地路径即可,修改示例:
    # 原代码
    # data_dir = dl_manager.download_and_extract(data_path)
    # 修改后
    data_dir = data_path
    
  • 备选方案1:升级Python版本
    把Python环境升级到3.8及以上版本,即可直接解决lzma模块缺少属性的问题
  • 备选方案2:降级datasets库版本
    如果无法升级Python,可将datasets库降级到2.4.0及以下版本,该版本及更早版本不会调用lzma的needs_input属性,执行安装命令:
    pip install datasets==2.4.0
  • 临时规避方案:强制跳过压缩包校验
    如果不想修改加载脚本也不想更换环境,可在调用load_dataset前添加如下代码,禁用datasets的自动压缩包检测:
    from datasets.utils import file_utils
    original_is_tarfile = file_utils.tarfile.is_tarfile
    file_utils.tarfile.is_tarfile = lambda x: False
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:45:02