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

加载IMDB数据集时遇DILL_AVAILABLE导入错误如何解决?

解决torchtext加载IMDB数据集时的ImportError问题

原因分析

这个错误是由于torchtext与PyTorch版本不兼容导致的,DILL_AVAILABLE变量在较新版本的PyTorch数据管道模块中已被移除或变更位置,而旧版torchtext仍在尝试调用它。

解决方案

以下是几种可行的解决方法:

方法1:匹配兼容的版本组合

  • 若使用PyTorch 2.0+,建议安装对应兼容的torchtext版本,比如torchtext==0.15.2(适配PyTorch 2.0.x),执行命令:
    pip install torchtext==0.15.2 --force-reinstall
    
  • 若坚持使用旧版torchtext,可降级PyTorch到对应兼容版本,比如PyTorch 1.13.x搭配torchtext 0.14.x

方法2:改用torchdata加载数据集

新版PyTorch推荐使用torchdata替代旧版torchtext的数据集加载方式,示例代码如下:

from torchdata.datapipes.iter import IterableWrapper
import os
import tarfile

# 下载并解压IMDB数据集(如果未下载)
data_root = os.path.expanduser('~/datasets')
imdb_tar_path = os.path.join(data_root, 'aclImdb_v1.tar.gz')
if not os.path.exists(imdb_tar_path):
    from torchdata.datapipes.iter import HttpReader
    url = "https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz"
    dp = HttpReader([url])
    with open(imdb_tar_path, 'wb') as f:
        for chunk in dp:
            f.write(chunk)

# 读取数据集
def load_imdb_split(split='train'):
    tar = tarfile.open(imdb_tar_path, 'r:gz')
    split_dir = f'aclImdb/{split}'
    data = []
    for label in ['pos', 'neg']:
        label_dir = f'{split_dir}/{label}'
        for member in tar.getmembers():
            if member.name.startswith(label_dir) and member.name.endswith('.txt'):
                f = tar.extractfile(member)
                text = f.read().decode('utf-8')
                data.append((text, 1 if label == 'pos' else 0))
    tar.close()
    return IterableWrapper(data)

train_iter = load_imdb_split('train')

方法3:手动修改torchtext源码(临时应急,不推荐)

找到报错的torchtext相关模块文件,将引用from torch.utils.data.datapipes.utils.common import DILL_AVAILABLE替换为:

try:
    from torch.utils.data.datapipes.utils.common import DILL_AVAILABLE
except ImportError:
    import dill
    DILL_AVAILABLE = dill is not None

该方法会修改第三方库源码,后续更新库时会被覆盖,仅作临时方案。

内容的提问来源于stack exchange,提问作者Sazzad Hissain Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:19:54