私のプロジェクトでは、setup.py
の依存関係としてspaCyがありますが、デフォルトモデルも追加したいと思います。
これまでの私の試みは次のとおりです。
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'],
私の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)
私はこれを見つけました AllenAIからのgithubの問題 同じ問題で解決策はありません。
モデルのURLを直接pip install
すると正常に機能しますが、パッケージをpip install
でインストールするときに、依存関係としてインストールしたいことに注意してください。
PEP 508URL要件に対するpipの最近のサポートを使用できます。
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',
],
これには、最新バージョンのsetuptoolsとwheel(wheelの場合は少なくともv0.32.0、setuptoolsについては不明)を使用してプロジェクトをビルドする必要があり、ユーザーはプロジェクトをインストールできるのは、少なくともバージョン18.1のpipを使用します。
ただし、さらに重要なことに、PyPIでパッケージを配布する場合、これは実行可能なソリューションではありません。 pipのリリースノートを引用 :
セキュリティ対策として、PyPIからパッケージをインストールするときに、それらのパッケージがPyPIでホストされていないパッケージに依存している場合、pipは例外を発生させます。将来的には、PyPIはそのような外部URL依存関係を持つパッケージの直接アップロードをブロックします。
これがうまくいくかどうかはわかりませんが、_setup.py
_で次のことを試してみてください。
os.system('python -m spacy download en')
setuptools.setup(...)
を呼び出した後
編集:
SpaCyのドキュメントによると、URLを介してrequirements.txtにSpaCyモデルを追加できるようになりました。これで、モデルを必要な場所にモジュールとしてインポートできるようになります。
_import en_core_web_sm
nlp = en_core_web_sm.load()
_