我正在尝试加载
en_core_web_sm
spaCy 模型,但我没有成功。
发生的错误如下:
OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a Python package or a valid path to a data directory.
我正在 Anaconda 虚拟环境中工作。勾选以下复选框:
conda activate gcp-env
conda install -c conda-forge spacy
python -m spacy download en
,仍然在正确的环境中spacy
添加到 requirements.txt
,并在第一次尝试失败后通过该路线安装依赖项spacy info
产生以下输出:
spacy info
============================== Info about spaCy ==============================
spaCy version 3.3.0
Location /Users/simonmortensen/opt/anaconda3/envs/gcp-env/lib/python3.10/site-packages/spacy
Platform macOS-11.6.5-x86_64-i386-64bit
Python version 3.10.4
Pipelines en_core_web_sm (3.3.0)
python -m spacy validate
产生以下输出:
================= Installed pipeline packages (spaCy v3.3.0) =================
ℹ spaCy installation:
/Users/simonmortensen/opt/anaconda3/envs/gcp-env/lib/python3.10/site-packages/spacy
NAME SPACY VERSION
en_core_web_sm >=3.3.0.dev0,<3.4.0 3.3.0 ✔
我之前已经浏览过几篇关于同一主题的 StackOverflow 帖子。这些问题通常都得到了解决,但我的问题仍然存在。
任何建议将不胜感激。预先感谢!
西蒙
编辑: 对于其他上下文,环境中的
pip list
包含两者
spacy 3.3.0
spacy-legacy 3.0.9
spacy-loggers 1.0.2
和
en-core-web-sm 3.3.0
即便如此,
import en_core_web_sm
也不起作用:
import en_core_web_sm
Traceback (most recent call last):
Input In [65] in <cell line: 1>
import en_core_web_sm
ModuleNotFoundError: No module named 'en_core_web_sm'
Spyder 是恶棍。
所有软件包均已正确安装在虚拟环境中,但 Spyder 未运行该环境(即使从实际上已激活环境的终端使用
spyder
命令启动 IDE)。
为了使Spyder运行在正确的环境中,您需要在Spyder首选项中更改Python解释器: ...然后重新启动内核。
我收到一个错误提示我
pip install spyder-kernels==2.1.*
,但是一旦完成(确保在正确的venv上执行),我重新启动了Spyder,它终于成功了!
请参阅线程中的讨论:https://github.com/explosion/spaCy/discussions/10895。
我认为这没有走环境好的道路。
在终端执行 which python ,并且您必须验证是否采用环境路径。
需要注意的是,spaCy 模型本质上是普通的 Python 包。所以你可以先检查它们是否存在,如果不存在,请下载并安装它们。以下功能仅在确实需要时才尝试下载...
import spacy
def install_spacy_model(spacy_model_id: str="en_core_web_sm", quiet: bool=False):
# Initiate the download only if it is really necessary (i.e. if the language pack is not installed).
if spacy.util.is_package(spacy_model_id):
print(f"spaCy model: [{spacy_model_id}] is already installed and will therefore not be downloaded again.")
else:
print(f"spaCy model: [{spacy_model_id}] was not found. Download initiated...")
# Suppress pip installation messages on request.
if quiet:
spacy.cli.download(spacy_model_id, False, False, "--quiet")
else:
spacy.cli.download(spacy_model_id, False, False)
现在就称呼它..
install_spacy_model()
结果:
>> spaCy model: [en_core_web_sm] was not found. Download initiated...
>> ✔ Download and installation successful
>> You can now load the package via spacy.load('en_core_web_sm')