Skip to content
Latchkey

Poetryとは?Pythonの依存関係管理とパッケージングを解説

PoetryはPythonのツールで、単一のpyproject.tomlから依存関係、仮想環境、パッケージングを管理し、再現性のあるインストールのためのlockfileを備えています。

Poetryは、JavaScriptやRustの開発者が享受しているlockfile駆動のオールインワンなワークフローをPythonにもたらします。requirementsファイル、setup.py、別個のvirtualenvツールを扱い分ける代わりに、すべてをpyproject.tomlに記述し、Poetryに解決、ロック、インストール、公開を任せます。

Poetryとは

PoetryはPythonプロジェクト向けの依存関係マネージャー兼buildツールです。標準のpyproject.tomlを読み書きし、完全な依存関係グラフを解決し、正確なバージョンをpoetry.lockに記録します。また、プロジェクト用の仮想環境を自動的に作成し管理します。

仕組み

「poetry add」で依存関係を宣言すると、Poetryは互換性のあるバージョンを解決してpoetry.lockに書き込みます。次に「poetry install」が、lockfileが指定するものを正確に、管理された仮想環境にインストールします。lockfileが解決済みのグラフ全体を捉えているため、どのマシンでもどのCI runnerでも同一の環境が得られます。

使用例

一般的な流れはadd、install、runです。

Typical Poetry commands
# add a dependency (updates pyproject.toml and poetry.lock)
poetry add requests

# install exactly from the lockfile
poetry install --no-interaction

# run a command inside the managed venv
poetry run pytest

CI/CDでの役割

CIでは「poetry install --no-interaction」がロックされた環境を再現し、「poetry run」がその中でtestやbuildを実行します。Poetryのvirtualenvやそのcacheディレクトリを実行間でcacheすると、再解決と再ダウンロードを避けられます。lockfileはCIのbuildを決定論的にし、これがゆるいrequirementsファイルではなくPoetryを採用する主な理由です。

代替ツール

固定されたrequirementsファイルを使うpipが最小限のベースラインです。PDMは同様の標準ベースのマネージャーです。uvは、解決、ロック、インストールができる高速な新顔です。Poetryは、依存関係、環境、公開をカバーする成熟した統合ワークフローで際立っています。

重要なポイント

  • Poetryはpyproject.tomlから依存関係、環境、パッケージングを管理します。
  • poetry.lockは解決されたグラフ全体を固定し、再現性のあるインストールを実現します。
  • CIでは「poetry install --no-interaction」を使い、virtualenvをcacheします。

関連ガイド