Open4
RyeでURLからtar.gz, whlをダウンロードする
PythonでspaCyを使って自然言語処理をするとき
import spacy
# ここでは en_core_web_sm を利用する
nlp = spacy.load("en_core_web_sm")
のようにモデルを利用する.
しかしモデルは spacy 本体には含まれないため
# ここでは en_core_web_sm をダウンロードする
python -m spacy download en_core_web_sm
のようにダウンロードする必要がある.
Rye でプロジェクトを管理しているので
rye add spacy
rye sync
として spacy をダウンロードした後に
rye run python -m spacy download en_core_web_sm
としてみたところ, No module named pip
と怒られた.
なるほど,確かに pip は入れていない.
ならば
rye add pip
rye sync
rye run python -m spacy download en_core_web_sm
とすれば良い訳だ.
...
......
.........
いや,待って欲しい.
それはいくらなんでもナンセンスだろう.
これでは何のために Rye を使っているのかがわからない.
pip がないことを怒られたということは,spacy download
は内部で pip を呼び出しており,これでダウンロードできるモデルは pip でダウンロードできる形式である可能性が高い.
ならば公開されているURLがわかれば
rye add <name> --url <url>
rye sync
の形式でダウンロードできるだろう.
さて en_core_web_sm は
執筆時点での en_core_web_sm の最新版
で tar.gz および whl の形式で公開されていた.
案の定である.
あとは愚直に
rye add en_core_web_sm --url https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl
rye sync
とすれば良さそうだ.
結果として問題なくダウンロードでき
import spacy
nlp = spacy.load("en_core_web_sm")
も動作した.
(補足)
rye add en_core_web_sm --url https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl
に代えて
rye add en_core_web_sm --url https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1.tar.gz
でも問題なくダウンロードできた.