1 日あたり 1 パッケージ 詩:決定論的依存関係管理
By hientd, at: 2026年2月27日10:03
予想読書時間: __READING_TIME__ 分
サブ依存関係が更新されて一日を台無しにしてしまったために、プロジェクトが壊れてしまった経験があるなら、Poetryが必要です。 Glintecoでは、プロジェクトの安定性と厳格なバージョン管理が不可欠な優先事項である場合、Poetryを使用しています。
「なぜ」 (Lockfileの力)
Poetryは単に「パッケージをインストール」するだけでなく、プロジェクト内のエコシステム全体を管理します。
-
真の決定性:
poetry.lockファイルは、主要なライブラリだけでなく、すべてのサブ依存関係とそのハッシュを追跡します。これにより、「私のマシンで動作する」が実際に「本番環境で動作する」ことを保証します。
-
依存関係リゾルバ: 時には競合するバージョンをインストールしてしまうことがある
pipとは異なり、Poetryのソルバーは、依存関係にバージョンの不一致がある場合、大声で早期に失敗するため、「依存関係地獄」が始まる前にそれを防ぎます。
-
統一されたビルドシステム: Poetryは、
poetry publishという単一のコマンドで、PyPIまたはプライベートレジストリへのパッケージングと公開を処理します。
ユニークなワークフロー: セマンティックバージョナー
Poetryは、プロジェクトのバージョン管理を簡単に行えるようにします。文字列を手動で編集する代わりに、セマンティックコマンドを使用します。
# バージョンを0.1.0から0.1.1に上げる
poetry version patch# バージョンを0.2.0に上げる
poetry version minor
# ホイールとソースディストリビューションをビルドする
poetry build
これにより、プロジェクトのメタデータは常に実際のリリースと同期されます。
比較: 新しい階層
| 従来のツール | Poetryに相当するもの | より優れている理由 |
|---|---|---|
| requirements.txt | poetry.lock | 100%の再現性のためにハッシュとサブ依存関係を含みます。 |
| venv + pip | poetry shell / run | バックグラウンドで仮想環境を自動的に管理します。 |
| setup.py / twine | poetry build / publish | 開発と配布の両方に1つのツール。 |
| pip-compile | poetry lock --no-update | ネイティブで、より高速で、よりインテリジェントな解決ロジック。 |