No module named 'en'
nlp项目出现这个错误,如果是spacy\util.py出的问题,表示找不到英文的模块.
官方的解决办法是在控制台输入以下命令:
python -m spacy download en_core_web_sm
这个我试了下一直出现连接错误,以下是解决办法
1. 先确认自己要用的spacy版本,
python -m spacy info
因为我这个项目要求用2.1所以
那 en_core_web_sm也要2.1版本的
2. 到github上面下载en_core_web_sm的gz档案(只有gz)
https://github.com/explosion/spacy-models/releases 要next好几页才会找到
en_core_web_sm-2.1.0.tar.gz (10.5MB)
相关的有en_core_web_md-2.1.0.tar.gz(91MB), en_core_web_lg-2.1.0.tar.gz(788MB)
建议一并下载下来
https://github.com/explosion/spacy-models/releases?after=nl_core_news_sm-2.1.0
3. 下载后解压缩,在所属目录打开控制台(在地址栏输入%comspec%) 或 打开power shell
输入Python.exe setup.py install
成功后, (例如我安装的是2.1版本的) 最后显示
Finished processing dependencies for en-core-web-sm==2.1.0
4. 理论上这样就可以了, 但是我还是报错,所以修改项目代码
原代码 self.nlp = spacy.load('en')
修改为
import en_core_web_md
self.nlp=en_core_web_md.load()
完成后不再报错了
测试代码:
import spacy
import en_core_web_md
nlp = en_core_web_md.load()
doc = nlp(u'This is a sentence.')
print(doc)