目录
一、OSError: [E050] Can't find model 'en_core_web_md'.It doesn't seem to be a Python package or a valid path to a data directory.
场景复现:在实现文本摘要生成,所以需要先下载语言库一类的包,用到了spacy库和en_core_web_sm,
在pycharm中运行代码,
spacy_en = spacy.load('en_core_web_md')
但是报错了:
OSError: [E050] Can't find model 'en_core_web_md'. It doesn't seem to be a Python package or a valid path to a data directory.
原因:这个错误的原因是环境中找不到en_core_web_sm这个包。导致这个错误的原因有两个:
解决方法:本文针对第1种情况,
(1)找到Python虚拟环境或conda环境中的torchtext第三方库下载位置,
D:\my\python-pycharm\python-envs\venv-deep\Lib\site-packages\torchtext\legacy\data
打开torchtext\legacy\data,找到file.py文件,
将其中函数参数tokenizer_language的值从'en'改为'en_core_web_sm'(共有两处)
修改完成,保存文件之后退出。
(2)可以通过以下命令来在pycharm的终端下载安装'en_core_web_sm',但是很难成功
python -m spacy download en_core_web_sm
或者,直接从
github
下载,也可以访问其github
仓库下载其他版本。
en_core_web_sm-3.0.0下载安装命令为:
pip install en_core_web_sm-3.0.0.tar.gz
下载完成之后的效果图:
(3)重新再pycharm运行代码,
但是为什么还是报错??
我又查看了我安装的spacy与en_core_web_sm的版本是否有冲突,
【注】可以是任意版本,但必须符合en_core_web_sm对于spacy的版本要求(见后面)
en_core_web_sm · Releases · explosion/spacy-models · GitHub
发现没有冲突。
(6)嗷嗷,突然意识到一件事。。。
要使用这行代码代替之前的,
spacy_en = spacy.load('en_core_web_sm')
代替
spacy_en = spacy.load('en_core_web_md')
重新执行代码,
ok,问题解决了,没有再报错了。