Python spaCy:`Can';找不到型号';en';`在GCloud上部署时

Python spaCy:`Can';找不到型号';en';`在GCloud上部署时,python,google-app-engine,gcloud,spacy,Python,Google App Engine,Gcloud,Spacy,我已经训练了一些NLP模型,还制作了一个Flask应用程序,将模型包装成API,供前端客户端调用。一切都很顺利,直到我在教程之后尝试在谷歌云的应用引擎上部署Flask应用程序 在GCloud上,我使用云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 vali

我已经训练了一些NLP模型,还制作了一个Flask应用程序,将模型包装成API,供前端客户端调用。一切都很顺利,直到我在教程之后尝试在谷歌云的应用引擎上部署Flask应用程序

在GCloud上,我使用云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
我还尝试在云shell上使用simple
helloworld
运行一个本地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
>>>

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

  • 使用pip安装Spacy lang模块,而不是使用Spacy命令加载Spacy lang模块。 修改
    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

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

  • spacy.load('en\u core\u web\u sm')


    这就是全部。重新部署你的应用程序,它应该可以正常工作。

    你救了我一天。谢谢