You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpaCy 'en'模型加载失败:已下载仍无法加载的技术求助

解决SpaCy找不到'en'模型的问题

我遇到了SpaCy的OSError:找不到'en'模型,尽管已经执行了下载命令但还是无法加载。相关操作命令及输出如下:

[jalal@goku entity-sentiment-analysis]$ which python
/scratch/sjn/anaconda/bin/python
[jalal@goku entity-sentiment-analysis]$ sudo python -m spacy download en
[sudo] password for jalal:
Collecting https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz
Downloading https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz (37.4MB)
100% |█████...

我帮你分析下这个问题的根源,再给出几个可行的解决办法:

问题根源

你当前使用的Python是conda环境中的版本(路径为/scratch/sjn/anaconda/bin/python),但你用sudo python -m spacy download en下载模型时,sudo会切换到系统默认的Python解释器,导致模型被安装到了系统Python的依赖目录里,而不是你正在使用的conda环境路径下。这就造成了你的conda环境中的SpaCy找不到已经下载的模型。

解决方案

方法1:用当前conda环境的Python直接下载(推荐)

先确保你激活了对应的conda环境:

  • 如果你用的是conda 4.4及以上版本,运行:conda activate <你的环境名>
  • 老版本conda运行:source activate <你的环境名>

激活环境后,直接运行以下命令(不要加sudo):

python -m spacy download en

这样模型会直接安装到当前conda环境的依赖路径中,SpaCy就能正常加载了。

方法2:手动链接模型到conda环境

如果你已经用sudo下载了模型,可以手动把模型链接到conda环境的SpaCy数据目录:

  1. 先找到系统Python下的模型安装路径:
sudo python -c "import spacy; print(spacy.util.get_package_path('en_core_web_sm'))"
  1. 再找到你的conda环境的SpaCy数据目录:
python -c "import spacy; print(spacy.util.get_config_path().parent / 'data')"
  1. 创建软链接(把下面的路径替换成你实际得到的路径):
ln -s /usr/lib/pythonX.Y/site-packages/en_core_web_sm /scratch/sjn/anaconda/lib/pythonX.Y/site-packages/spacy/data/en

方法3:代码中直接使用完整模型名

如果不想折腾路径,也可以在代码里直接加载模型的完整名称,跳过别名匹配:

import spacy
nlp = spacy.load("en_core_web_sm")

因为en其实是en_core_web_sm的别名,有时候别名没有正确创建,直接用全名就能正常加载。


内容的提问来源于stack exchange,提问作者Mona Jalal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:49:54