【ポエトリー】

Poetry(ポエトリー) とは?

最終更新:
💡 Pythonプロジェクトの部品表と組み立てをまとめて受け持つ世話係

Pythonの依存関係の管理とパッケージ作成をまとめて行えるツール。依存ライブラリの宣言・インストール・バージョンの固定から、パッケージのビルドと公開までを扱う。

📌 このページのポイント
Poetry の依存管理フロー pyproject.toml プロジェクト設定 依存パッケージ定義 Poetry 依存解決 仮想環境管理 パッケージ公開 poetry.lock バージョン固定 チームで同じ版を使う 従来の方法との比較 従来(pip + venv) requirements.txt + setup.py + setup.cfg 仮想環境は手動で作成・管理 設定ファイルが分散しがち Poetry pyproject.toml に一元化 仮想環境を自動で作成・管理 lockで同じ版をそろえやすい
Poetryの依存管理フローと従来手法との比較
ひよこ ひよこ
Poetryって名前がおしゃれだけど、pipとは何が違うの?
ペンギン先生 ペンギン先生
pipはパッケージをインストールする道具だよ。Poetryはそれに加えて、依存関係の宣言と解決、バージョンの固定、仮想環境の管理、パッケージのビルドと公開までまとめて扱うんだ
ひよこ ひよこ
pyproject.tomlっていうファイルが大事なの?
ペンギン先生 ペンギン先生
そうだよ。プロジェクト名やバージョン、依存ライブラリをここに書くんだ。Poetry 2.0からは、Pythonの標準規格(PEP 621)に沿った[project]の欄に依存関係を書けるようになったよ
ひよこ ひよこ
poetry.lockファイルって何のためにあるの?
ペンギン先生 ペンギン先生
依存関係を解決した結果の正確なバージョンを記録するファイルだよ。バージョン管理にコミットしておけば、ほかの人がpoetry installしたときも同じバージョンが入るんだ。ただしPythonの版やOSの違いまでは固定しないから、そこは別に合わせようね
ひよこ ひよこ
おもしろい!仮想環境も自動で作ってくれるの?
ペンギン先生 ペンギン先生
仮想環境の中で実行していなければ、Poetryがプロジェクト用の仮想環境を作るか、前に作ったものを使うよ。なお、Poetry 2.0でpoetry shellは本体から外れてプラグインになったから、今はpoetry env activateで有効化の方法を表示するんだ
ひよこ ひよこ
他に似たようなツールってある?
ペンギン先生 ペンギン先生
Rust製のuvが代表的だね。公式にはpipより10〜100倍速いとうたっていて、パッケージ管理やPython本体の導入まで1つで扱えるんだ。どちらを選ぶかは、チームで使い慣れているかや必要な機能で決めればいいよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Poetry」って出てきたら「Pythonの依存関係の管理とパッケージの公開をまとめて扱うツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Poetry」 = 詩
💬 英語で「詩」という意味の言葉だよ。名前の由来について公式ドキュメントでは説明を確認できなかったよ

参考資料

← 用語集にもどる