加载en_core_web_sm报错,求助解决模型安装与运行异常问题
解决spaCy与en_core_web_sm版本兼容及依赖报错的方案
一、彻底清理环境残留
- 卸载所有相关包,消除版本冲突隐患:
pip uninstall -y spacy en_core_web_sm transformers - 手动删除
...anaconda3\Lib\site-packages下的残留文件夹:- 查找并删除所有以
spacy、en_core_web_sm、transformers开头的文件夹
- 查找并删除所有以
- 清理pip缓存,避免安装旧版本包:
pip cache purge
二、使用隔离虚拟环境(核心步骤)
全局环境依赖混乱是问题根源,用虚拟环境彻底隔离:
- 用conda创建并激活环境(推荐):
conda create -n spacy_env python=3.9 conda activate spacy_env - 或用Python自带venv:
python -m venv spacy_env # Windows下激活 spacy_env\Scripts\activate
三、精准安装匹配版本的依赖
确保spaCy、模型、transformers版本完全兼容:
- 安装指定版本spaCy:
pip install spacy==3.4.3 - 安装对应版本的en_core_web_sm模型(必须与spaCy主版本一致):
python -m spacy download en_core_web_sm==3.4.0 - 安装兼容的transformers版本(解决
BertTokenizerFast找不到的问题):pip install transformers==4.26.1
四、验证安装与运行
运行测试代码确认问题解决:
import spacy nlp = spacy.load("en_core_web_sm") doc = nlp("Hello, world!") print([token.text for token in doc])
如果仍报错,执行pip list检查以下版本是否匹配:
- spacy: 3.4.3
- en-core-web-sm: 3.4.0
- transformers: 4.26.1
错误原因说明
AttributeError: module 'transformers' has no attribute 'BertTokenizerFast':transformers版本与spaCy不兼容,要么版本过旧缺失该类,要么版本过新重构了模块结构RegistryError: Unknown function registry: 'vectors':spaCy与模型版本不匹配,高版本模型的结构与低版本spaCy的注册表不兼容- 手动删除模型文件夹后仍报错:全局环境残留的旧依赖包或缓存未清理,导致安装/加载时仍调用旧版本文件
内容的提问来源于stack exchange,提问作者querent
相关产品推荐
相关产品推荐

