python - spaCy: `Can' t 在 GCloud 上部署时找到模型 'en'`

标签 python google-app-engine gcloud spacy

我已经训练了一些 NLP 模型,还完成了一个 Flask 应用程序,将模型包装成 API 供前端客户端调用。一切都很好,直到我尝试按照教程 here 在 Google Cloud 的 App Engine 上部署 Flask 应用程序.

在 GCloud 上,我使用 Cloud Shell 通过 gcloud app deploy 部署 Flask 应用程序,它不断抛出错误:

OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.

我也尝试过许多其他 SO 帖子中提出的各种解决方案,但都没有解决问题:

python3 -m spacy download en
python3 -m spacy download en_core_web_sm
sudo python3 -m spacy download en
sudo python3 -m spacy download en_core_web_sm

我还尝试使用简单的 hello world 在 Cloud Shell 上运行本地 python shell,但它以某种方式起作用了:

Python 3.7.3 (default, Nov 13 2019, 23:27:19)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> nlp = spacy.load('en')
>>> test = "hello world"
>>> nlp(test)
hello world
>>>

最佳答案

你需要做两件事来让它工作。

  1. 不是使用 spacy 命令加载 Spacy lang 模块,而是使用 pip 来安装它。 修改 requirements.txt 以添加以下行:

    https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz#en_core_web_sm

  2. 修改您的代码以通过确切的包名称加载 lang 模型,因为不再为我们创建目录链接

spacy.load('en_core_web_sm')

这就是它的全部。再次部署您的应用,它应该可以正常工作。

关于python - spaCy: `Can' t 在 GCloud 上部署时找到模型 'en'`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992341/

相关文章:

python - 如何在 Python 中查找当前日期是工作日还是周末?

python - Google 应用引擎无法实例化超过 Google 应用引擎中 backends.yaml 中定义的后端实例的任务队列

node.js - 如何在 Google App Engine 上运行 Ghost

google-compute-engine - 容器引擎 : AttributeError: 'module' object has no attribute 'Credentials'

python - Flask:.env & 中的 app.config 设置。 mod_wsgi 中的flaskenv

python - Cython:优化原生 Python 内存 View

google-app-engine - Google App Engine 中 PolyModel 相对于模型的成本

node.js - 无法在 Google App Engine 上使用 nodejs 应用程序更新 VM

scala - Dataproc 返回 StatusRuntimeException 找不到集群

python - PID 号不匹配