使用AllenNLP模型时遇ImportError:无法导入SummaryWriter求助
解决AllenNLP中
ImportError: cannot import name 'SummaryWriter'的问题 这个错误我之前帮别人排查过,本质是AllenNLP的训练模块依赖TensorBoard的SummaryWriter组件,但你的环境要么缺了这个依赖,要么版本不兼容。下面给你几个一步步解决的方案:
1. 先确认TensorBoard是否安装
打开你的虚拟环境终端,运行这条命令检查:
pip list | grep tensorboard
要是没任何输出,说明压根没装TensorBoard,直接装它:
pip install tensorboard
2. 匹配AllenNLP和TensorBoard的版本
不同版本的AllenNLP对TensorBoard的版本要求差得挺多:
- 如果你用的是0.9.x及更早的AllenNLP,它依赖的是TensorBoard 1.x版本,装这个就对了:
pip install tensorboard==1.15.0
- 要是你用的是1.x及以上的AllenNLP,直接装最新版TensorBoard就行:
pip install --upgrade tensorboard
另外注意你的Python是3.6,新版本TensorBoard已经不支持3.6了,所以如果是这个情况,选TensorBoard 2.5.x及以下的版本装。
3. 临时修复导入语句(应急用)
要是不想动版本,也可以直接改AllenNLP的源码文件。找到报错的那个trainer.py:/home/administrator/aman/venv-kbs/lib/python3.6/site-packages/allennlp/training/trainer.py,打开后看第21行的导入:
- 如果是
from torch.utils.tensorboard import SummaryWriter,换成from tensorboardX import SummaryWriter,然后先装tensorboardX:
pip install tensorboardX
- 如果本来就是tensorboardX的导入,那大概率是版本不匹配,跟着步骤2调整版本就行。
4. 重装AllenNLP兜底
要是前面的方法都不管用,干脆把AllenNLP卸载重装,让它自动拉取兼容的依赖:
pip uninstall -y allennlp pip install allennlp
内容的提问来源于stack exchange,提问作者Aman Dalmia
相关产品推荐
相关产品推荐

