如何处理 requirements.txt 中的非 pip 要求

what to do with non-pip requirement in requirements.txt

所以我最近将我的 NLP 应用程序移到了一台新机器上。使用 pyenv 添加与旧机器相同的 python 环境,并使用 pip 安装所有依赖项。然后是 pip 没有安装的 'dependency' 之类的,也许 'model' 是一个更好的词。安装它的命令是:

python -m spacy.en.download

现在,我想在我的存储库中的某处注明,所以如果有一天我或其他人去另一台 PC 上安装整个东西,它就在那里,根据 Python 风格指南和惯例。

this spaCy 页面上说它可以进入 requirements.txt。虽然

pip freeze > requirements.txt

将创建一个文件,该文件不会捕获安装该要求的正确过程。总有一天会有人运行

pip install -r requirements.txt

..并且仍然会 运行 出现和我一样的错误

Warning: no model found for 'en'

Only loading the 'en' tokenizer.

有谁知道如何在 requirements.txt 中正确列出此要求?

spaCy 的数据包实际上被包装为 pip 包,正是出于这个原因——它们有 setup.py、版本等。只是它们很大,所以不是通过 PyPi 分发。您可以在 requirements.txt 中指向 URL 或文件路径:

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

许多生产用户拥有自己的 PyPi 服务器(因此他们不会从 Internet 下载任意代码)。如果这样做,您可以通过 PyPi 仓库分发模型。