导入SpacyTextBlob报AttributeError错误的原因及解决方案问询
报错原因
该问题由版本兼容性导致,和命令变更无关。
- 最新版SpacyTextBlob仅适配spaCy 3.0及以上版本,你遇到的
AttributeError: type object 'Language' has no attribute 'factory'报错,是因为Language.factory是spaCy 3.0才新增的组件注册API,你当前使用的spaCy 2.3.7版本不存在该内置属性。 - 你尝试安装的
contextualSpellCheck和该报错没有关联,其安装失败大概率也是和你当前的旧版spaCy环境不兼容导致。 - 该问题属于spaCy 2.x用户使用新版第三方扩展包的常见问题,有大量同类报错记录可参考。
可行解决方案
你可以根据自身开发环境需求选择以下任意一种方案解决:
方案1:升级到spaCy 3.x(推荐,可使用SpacyTextBlob全部新特性)
- 先卸载现有旧版依赖
pip uninstall spacy spacytextblob -y - 安装适配Python 3.8的spaCy 3.x稳定版
pip install spacy==3.6.2 --user - 安装最新版SpacyTextBlob
pip install spacytextblob --user - 调整导入使用代码符合spaCy 3规范
import spacy from spacytextblob.spacytextblob import SpacyTextBlob nlp = spacy.load("en_core_web_sm") nlp.add_pipe("spacytextblob")
方案2:保留现有spaCy 2.3.7版本,安装适配旧版spaCy的SpacyTextBlob
- 卸载现有不兼容的SpacyTextBlob版本
pip uninstall spacytextblob -y - 安装适配spaCy 2.x的0.1.7版本SpacyTextBlob
pip install spacytextblob==0.1.7 --user - 按旧版规范导入使用
import spacy from spacytextblob.spacytextblob import SpacyTextBlob nlp = spacy.load("en") nlp.add_pipe(SpacyTextBlob(nlp))
内容的提问来源于stack exchange,提问作者EMT
相关产品推荐
相关产品推荐

