如何将Spacy模型添加到requirements.txt文件中?

30
我有一个应用程序使用Spacy模型“en_core_web_sm”。我已在本地计算机上测试了该应用程序,并且工作正常。
但是,当我将其部署到Heroku时,它会给我这个错误:
“找不到模型' en_core_web_sm'。它似乎不是快捷方式链接、Python包或数据目录的有效路径。”
我的requirements文件包含spacy==2.2.4。
我一直在研究这个错误,并发现需要使用以下命令单独下载模型: python -m spacy download en_core_web_sm 我一直在寻找将其添加到requirements.txt文件的方法,但还没有能够找到一个可行的!
我也尝试了这个-将以下内容添加到需求文件中: -e git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz#egg=en_core_web_sm==2.2.0 但是,它给了这个错误:
"克隆git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz至/app/.heroku/src/en-core-web-sm 运行命令git clone -q git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz /app/.heroku/src/en-core-web-sm 致命错误:远程错误:explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz不是一个有效的存储库名称"

有没有办法从需求文件中加载这个Spacy模型?或者有其他可能的解决方法吗?

谢谢。


你遇到这个错误是因为那是一个指向zip文件的URL... 你需要传递一个指向git仓库的URL才能够克隆它... - Swetank Poddar
谢谢Swetank,我无法弄清楚那个URL是什么。你能帮忙吗?非常感谢您的帮助。 - rohit0505
下面的答案已经编辑过了,以回答您的问题!:D - Swetank Poddar
感谢Swetank,编辑后的答案仍然出现错误:“将git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz克隆到/tmp/pip-req-build-at911nv7中 运行命令git clone -q git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz /tmp/pip-req-build-at911nv7 致命错误:远程错误:explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz不是有效的存储库名称” - rohit0505
3个回答

28

如果你使用 Docker,请在 Dockerfile 中添加此内容到部署步骤中。

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

编辑

requirements.txt中添加以下内容:

spacy>=2.2.0,<3.0.0 https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz#egg=en_core_web_sm

请参阅Spacy文档的“下载和要求模型依赖项”部分。

要了解如何添加来自GitHub源代码的依赖项,请查看此处链接并按照YPCrumble的答案进行操作。


谢谢Tausif,我是否有办法将其添加到需求文件中?我没有使用 Docker。 - rohit0505
感谢Tausif的帮助,但还是出现了错误: "Cloning git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz to /tmp/pip-req-build-at911nv7 Running command git clone -q git://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz /tmp/pip-req-build-at911nv7 fatal: remote error: explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz不是有效的存储库名称。" - rohit0505

9

对于 en-core-web-sm == 3.0.0 版本,这个方法适用。

将代码行 "en-core-web-sm==3.0.0" 替换为

en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0-py3-none-any.whl

这是被接受的答案,百分之百有效。 - undefined

6

好的,经过更多的谷歌搜索和寻找解决方案,我找到了一个可行的解决办法:

我从@tausif在他的回答中提供的url下载了tarball文件,并将其保存在拥有我的requirements.txt文件的目录中。

然后我在我的requirements.txt文件中添加了这一行:./en_core_web_sm-2.2.5.tar.gz

随后继续部署到Heroku - 部署成功,应用程序现在完美运行。


请检查我答案的修改,如果可行的话,可能会更简洁一些。 - tausif
非常感谢你,Tausif。我会在下一次编辑应用程序时测试你最新的答案,并在此处回复结果。 - rohit0505

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接