w4n*_*ust 5 python setup.py spacy
在我的项目中,我有spaCy作为依赖项setup.py,但是我还想添加一个默认模型。
到目前为止,我的尝试是:
install_requires=['spacy', 'en_core_web_sm'],
dependency_links=['https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz#egg=en_core_web_sm'],
Run Code Online (Sandbox Code Playgroud)
在我的包中setup.py,但既包含pip install我的包裹的常规内容,也包含pip install --process-dependency-links回报:
pip._internal.exceptions.DistributionNotFound: No matching distribution found for en_core_web_sm (from mypackage==0.1)
Run Code Online (Sandbox Code Playgroud)
我从AllenAI找到了这个github问题,有同样的问题,没有解决方法。
请注意,如果pip install直接使用模型的url,它可以正常工作,但是当我的软件包使用安装时,我想将其安装为依赖项pip install。
您可以使用pip对PEP 508 URL要求的最新支持:
install_requires=[
'spacy',
'en_core_web_sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz',
],
Run Code Online (Sandbox Code Playgroud)
请注意,这需要您使用最新版本的setuptools和wheel构建项目(wheel至少为v0.32.0;不确定setuptools),并且只有在以下情况下,用户才能安装项目:至少使用pip版本18.1。
不过,更重要的是,如果您打算在PyPI上分发软件包,则这不是可行的解决方案。引用pip的发行说明:
作为一项安全措施,如果从PyPI安装软件包时,pip会引发异常,前提是这些软件包依赖于未在PyPI上托管的软件包。将来,PyPI将直接阻止具有此类外部URL依赖关系的包上传。
小智 6
这是我的可安装PyPi的软件包的解决方法(为清晰起见,对其进行了稍微编辑):
try:
nlp = spacy.load('en')
except OSError:
print('Downloading language model for the spaCy POS tagger\n'
"(don't worry, this will only happen once)", file=stderr)
from spacy.cli import download
download('en')
nlp = spacy.load('en')
Run Code Online (Sandbox Code Playgroud)
这很麻烦,但至少可以在不需要用户参与的情况下起作用。我试图说服 spaCy团队打包PyPi最重要的模型文件。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |