Google Colab PyTorch环境allennlp2.4.0训练报Ontonotes导入ImportError
导入错误根因
该报错本质是两层问题叠加导致:
- 版本不匹配:你使用的AllenNLP 2.4.0版本,已经将
Ontonotes、OntonotesSentence类从allennlp.data.dataset_readers.dataset_utils的顶层导出列表中移除,调整到了dataset_utils.ontonotes子模块下,原有代码里的旧导入路径无法在2.4.0版本下正常生效。 - 安装命令拼写错误:你最初写的第一条安装命令把包名
allennlp错写为alennlp,该命令本身无法完成指定版本的安装,后续pip install allennlp-models命令会自动拉取适配的AllenNLP版本,进一步放大了代码和环境的版本差异。
可落地解决步骤
- 第一步:修正安装命令,锁定版本避免依赖漂移
替换原有安装命令为正确拼写、版本对齐的写法:
必须给pip install allennlp==2.4.0 pip install allennlp-models==2.4.0allennlp-models也指定和核心包一致的2.4.0版本,否则pip会自动拉取更高版本的模型依赖,和项目代码的兼容性会进一步下降。 - 第二步:匹配新版本的模块导入路径
打开报错指向的large_scale_oie/dataset_readers/oie_reader.py文件,将第12行的原有导入语句:
替换为2.4.0版本对应的子模块导入路径:from allennlp.data.dataset_readers.dataset_utils import Ontonotes, OntonotesSentencefrom allennlp.data.dataset_readers.dataset_utils.ontonotes import Ontonotes, OntonotesSentence - 第三步(可选,适合不想修改项目源码的场景):
可以在环境层面做导入别名映射,不需要改动项目文件,操作方式是在Python启动时预先把新路径下的类注册到旧路径的模块命名空间下,执行训练命令前在Colab的代码块中运行如下代码即可:
执行完成后再运行原有的训练命令,即可绕过导入路径检查。import sys from allennlp.data.dataset_readers.dataset_utils.ontonotes import Ontonotes, OntonotesSentence sys.modules['allennlp.data.dataset_readers.dataset_utils'].Ontonotes = Ontonotes sys.modules['allennlp.data.dataset_readers.dataset_utils'].OntonotesSentence = OntonotesSentence
内容的提问来源于stack exchange,提问作者Mitra Eisaie
相关产品推荐
相关产品推荐

