从torchtext导入模块时遇ImportError:无法导入unicode_csv_reader
解决torchtext导入legacy模块时的ImportError问题
问题重现
导入代码:
from torchtext.legacy import data from torchtext.legacy import Field, LabelField, TabularDataset, BucketIterator
错误回溯核心信息:
ImportError: cannot import name 'unicode_csv_reader' from 'torchtext.utils'
问题原因
torchtext 0.12及以上版本对模块结构做了大幅调整,unicode_csv_reader被从torchtext.utils迁移到torchtext.data.utils,但torchtext.legacy模块的代码仍在尝试从旧路径导入该函数,导致版本不兼容报错。
解决方法
方法1:降级torchtext到兼容版本(推荐)
这是最直接且稳定的解决方案,将torchtext降级到0.11.x版本(与PyTorch 1.11.x版本匹配),执行以下命令:
pip install torchtext==0.11.2
注意:需确保PyTorch版本与torchtext版本匹配,比如PyTorch 1.11对应torchtext 0.11,PyTorch 1.10对应torchtext 0.10,避免引发其他兼容性问题。
方法2:手动修改torchtext的legacy代码(临时方案)
如果不想降级,可以找到本地torchtext安装目录下的legacy/data/dataset.py文件,将第13行的导入语句:
from torchtext.utils import download_from_url, unicode_csv_reader
修改为:
from torchtext.utils import download_from_url from torchtext.data.utils import unicode_csv_reader
但这种方法需要修改库文件,后续更新torchtext会覆盖修改,不建议长期使用。
内容的提问来源于stack exchange,提问作者Natchaya
相关产品推荐
相关产品推荐

