LoginSignup
1
1

More than 3 years have passed since last update.

poetry で環境ごとにインストールするパッケージを切り替える

Posted at

Poetry で python の環境を管理していて、学習用サーバーと推論用のサーバーで異なるパッケージを入れたくなったのでメモ。

背景

基本的には全部 dependencies に突っ込んでしまえば良いと思っていたんだけど、この世の中には install だけでメモリを数GB必要とする強力かつ凶悪なパッケージたちがいるらしいので、貧弱なインフラではインストールすらできねぇ...ということが問題になった。

(一時的に)インフラ強くしろよ、というのは妥当に聞こえるが、この先数ヶ月、ないし数年に渡ってインストールが終わったあとに確実にインスタンスサイズを変える自信があるかい?僕にはない。だから工夫した。

本題

poetry には optionalextras という概念がある。
それぞれ addinstallサブコマンドのオプションである。

結論から書くと、以下の手順でうまく行った:

1. 依存パッケージ追加時

$ poetry add --optional SOME_STRONG_PACKAGE

2. 任意のエディタで pyproject.toml に extrasパッケージを追加

$ vi pyproject.toml

# ↓追加
[tool.poetry.extras]
train = ["torch", "torchtext"]
↑ グループ名   ↑ インストールするパッケージのリスト(dependencies の方で optionalになっていることを確認)

3. インストール(extrasが不要な場合)

$ poetry install

3'. インストール(extrasが必要な場合)

$ poetry install -E train

詰まったところ

すでに poetryで管理されているプロジェクトで上記の方法を試したら、以下のエラーが出た:

[ValueError]        
Extra [train] is not specified.  

その後、 poetry.lock を消して再度上の poetry install -E train を試したら、うまく行った。
明らかにエラーメッセージが親切でない PRチャンス。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1