🐍
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