どうも、nippa です。
Poetry1.2 で追加された新機能をまとめておきます。
グループ機能と環境同期はお世話になりそうな機能です。
すべての機能は試せていないので、公式をご確認ください。
- 環境
- グループ機能
- poetry から requirements.txt のエクスポート
- git レポジトリに対して、サブディレクトリを指定してインストール
- シングルページの登録
- poetry.lock ファイルで Poetry の環境を動悸する
- 感想
環境
- macOS 12.6
- poetry 1.2
グループ機能
グループのフォーマット
これまでは、main と dev の 2 つでしたが、1.2 からは gruop 機能が追加されました。
これまでの dev はpyproject.toml
で以下のように記載されていましたが、
[tool.poetry.dev-dependencies] flake8 = "^5.0.4"
1.2 からはグループの1つとして、記載されるようになりますので、修正が必要になります。
[tool.poetry.group.dev.dependencies] flake8 = "^5.0.4"
グループ機能が追加されたことにより、同じソースから複数の docker image を作成する場合や、API を分けて実装する際など活用の幅が広がります。
グループを指定してパッケージの追加
以下のように--group [グループ名]
を指定してパッケージを追加することができます。
poetry add [パッケージ名] --group [グループ名]
これまでのpoetry add -D
は 1.2 から使えなくなります。
グループ依存をしてたパッケージのインストール
グループ依存をオプションで指定してパッケージのインストールができるようになりました。
# mainと指定したグループをインストール poetry install --with [グループ名] # 指定したグループを除外してインストール poetry install --without [グループ名] # 指定したグループのみをインストール poetry install --only [グループ名]
グループのパッケージの削除
以下のコマンドは、指定したグループから指定のパッケージを削除します。
poetry remove [パッケージ名] --group [グループ名]
poetry から requirements.txt のエクスポート
これまでは requirements.txt を poetry から作成するには plugin をインストールする必要がありましたが、1.2 からデフォルトでプラグインがインストールされるようになります。
export の使い方としては以下のようになります。
poetry -o [ファイル名] -f requirements.txt --without-hashes
poetry-plugin-export のダウンロードページ
git レポジトリに対して、サブディレクトリを指定してインストール
git レポジトリを poetry を使ってインストールする際に、サブディレクトリを指定することが可能になります。
#subdirectory=[サブディレクトリ]
を以下のように指定することで、指定のディレクトリにインストールすることが可能です。
$ poetry add git+https://github.com/myorg/mypackage_with_subdirs.git#subdirectory=subdir
シングルページの登録
シングルページをソースとして登録することが可能になりました。
poetry source add <SOURCE_NAME> <PAGE_URL> # e.g. poetry source add jax https://storage.googleapis.com/jax-releases/jax_releases.html
個人的にはこの機能の利用方法は今のところ思いついていません。。。
poetry.lock ファイルで Poetry の環境を動悸する
複数プロジェクトで poetry を利用しているとパッケージを追加し忘れていても環境に残っている場合がありました。
そのようなときにpoetry.lock
の内容を環境に同期させることができるようになりました。
--sync
オプションを付けてインストールすると、同期されます。
poetry install --sync
この機能は地味ですが、結構使う頻度が多くなると思います。
感想
ざっくりとではありますが、Poetry1.2 の新機能についてまとめてみました。
いろいろ使いやすくなってきたので、python のパッケージ管理は poetry でと思っています。
ではでは、また次回。