🐍
Poetryでプラットフォームごとにインストールするライブラリを変える
Poetry とは
Python ライブラリの依存管理ツールです。
課題:プラットフォームごとにインストールするライブラリを変えたい
プラットフォームごとにインストールするライブラリを変えたい場合があります。例えば、 Tensorflow 1.x では、 インストール先のマシンにGPUがあるかどうかによってライブラリ名を変える必要があります ( tensoflow と tensorflow-gpu )。
 解決策:--extras オプション
Poetry の --extras オプションで解決できます。最終的には以下のようなコマンドで切り替えることができます。
CPUの場合
$ poetry install -E cpu
GPUの場合
$ poetry install -E gpu
設定手順は以下です。
プラットフォームに依存するライブラリを追加するときに、以下のコマンドで追加します。
$ poetry add "$LIBRARY=$VERSION"[$EXTRAS] --optional
$EXTRAS はライブラリ群に対するタグのようなもので、今回の例ではプラットフォーム名などを記入します。
例)
$ poetry add "tensorflow-gpu=1.14"[gpu] --optional 
次に、以下のように pyproject.toml に、プラットフォームごとにインストールしたいライブラリのリストを追記します。
pyproject.toml
[tool.poetry.extras]
cpu = ["tensorflow"]
gpu = ["tensorflow-gpu"]
複数ライブラリある場合は ["lib1", "lib2"] のように書きます。
あとは以下のように環境をセットアップする際に --extras, -E でプラットフォームを指定するだけです。
CPUの場合
$ poetry install -E cpu
GPUの場合
$ poetry install -E gpu
また、 公式ドキュメント にも書かれている通り、 extras はタグのように複数指定することもできます。
$ poetry install --extras "mysql pgsql"
$ poetry install -E mysql -E pgsql


Discussion