Skip to content
Latchkey

Flit vs Poetry: Python パッケージングツールの比較

ビルドして公開したいだけのシンプルな純 Python パッケージには Flit を選び、ロックされた依存関係、virtualenv 管理、依存解決を 1 つのツールで扱いたい場合は Poetry を選びましょう。

Flit と Poetry はどちらも pyproject.toml から Python パッケージをビルドして公開しますが、対象とするスコープが異なります。Flit は意図的にミニマルで、ほとんど設定なしで純 Python パッケージをビルドしてアップロードします。Poetry は独自のリゾルバ、ロックファイル (poetry.lock)、環境処理を備えたフルなプロジェクト兼依存関係マネージャーです。

FlitPoetry
スコープbuild + 公開のみ解決 + ロック + venv + build + 公開
ロックファイルなしpoetry.lock
依存関係リゾルバなし (依存は自分で管理)組み込みリゾルバ
最適な用途純 Python ライブラリ複雑な依存を持つアプリとライブラリ
設定pyproject.toml ([tool.flit])pyproject.toml ([tool.poetry])
公開flit publishpoetry publish

それぞれが本当に優れている点

Flit はシンプルさで優れます。コンパイル拡張のない単一モジュールや純 Python パッケージなら、flit buildflit publish は可能な限り手間が少なくて済みます。Poetry は依存管理が重要な場面で優れます。推移的依存を解決してロックし、virtualenv を管理し、ライフサイクル全体で一貫した CLI を提供します。

CI では

Flit の pipeline はごく小さく、install、flit build、そして artifact のアップロードだけです。Poetry の pipeline は、poetry.lock から厳密な環境を復元する poetry install の恩恵を受け、runner 間で build を再現可能にします。シンプルなパッケージを公開するだけなら、Flit は CI 内の可動部品が少なくて済みます。

正直な注意点

Flit は解決もロックも行わないため、依存が多いプロジェクトや自明でない build ステップを持つプロジェクトには適したツールではありません。Poetry は歴史的に一部の PEP メタデータ標準から逸脱し、リゾルバは大きなグラフで遅くなることがありましたが改善されています。新しいツール (uv、PDM) は速度で直接競合しています。

結論

できる限りツールを少なくしたい、ミニマルな純 Python パッケージには Flit を選びましょう。パッケージングだけでなく、依存解決、ロックファイル、環境管理が必要なら Poetry を選びましょう。

関連ガイド