Poetryとは? – Python開発を劇的に快適にする依存管理ツール

その他

Poetryとは?

Pythonのプロジェクトを開発していると、次のような悩みを感じたことはありませんか?

  • 仮想環境(venv)の切り替えが面倒
  • パッケージのバージョンがずれる
  • pythonのバージョンを固定

これらをすべて解決してくれるのが、Poetry(ポエトリー) です。Poetry は、Pythonの依存関係・パッケージ・仮想環境を一元的に管理できるツールです。かんたんに言えば、「pip + venv + setuptools」をひとつにまとめた新しい管理ツール。

使い方

インストール

macOS / Linux

% curl -sSL https://install.python-poetry.org | python3 -

または、Homebrewにより

% brew install poetry

確認

% poetry --version
Poetry (version 2.2.1)

プロジェクトの作成

% poetry new myproject

ファイル構成

myproject/
 ├── pyproject.toml   ← 設定ファイル
 ├── myproject/       ← ソースコード
 └── tests/           ← テストコード

[project]
name = "myproject"
version = "0.1.0"
description = ""
authors = [
    {name = "Your name",email = "Your email"}
]
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
]

[tool.poetry]
packages = [{include = "myproject", from = "src"}]

[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"

既存プロジェクトでの使用方法

% cd myproject
% poetry init

追加

% poetry add requests

開発用パッケージ追加

% poetry add --dev pytest

削除

% poetry remove requests

Poetryが解決すること

仮想環境(venv)の切り替えが面倒

プロジェクトごとに python -m venv で環境を作り、source venv/bin/activate で手動で切り替えるとプロジェクト外でもpythonが切り替わってしまう。フォルダを移動するたびに「今どのvenvがアクティブか」も分かりにくい。

Poetryの解決策

Poetryはコマンドを実行した瞬間に、プロジェクトごとの仮想環境を自動作成・管理 してくれます。プロジェクト内でpoetry runをつけれ実行すれば、シェルのpythonに依存せずに、プロジェクトのpythonが有効になる。

poetry install → 自動でvirtualenv生成
poetry run python → 自動で正しい環境で実行
poetry env info → どの環境が使われているか一目で確認

もう「venvを作る」「有効化する」などを意識する必要はありません。

パッケージのバージョンがずれる

pip install したパッケージをいちいち requirements.txt に書き出すのは面倒。気づくとバージョンがずれて、環境再現できなくなる。

Poetryの解決策

Poetryは依存関係をすべてpyproject.toml(宣言) と poetry.lock(確定版)で自動的に管理します。poetry add パッケージ名 とするだけで:
pyproject.toml → パッケージ名を追加
poetry.lock → 依存をすべて確定バージョンでロック
チーム全員が同じ poetry.lock を使えば、
poetry install だけで完全に同じ環境を再現できます。
requirements.txt は不要です。

Pythonのバージョンを固定

Pythonのバージョンが違って、他のマシンや本番サーバーで「動かない!」

Poetryの解決策

Poetryは「環境の完全再現」を前提に設計されています。
poetry env use python3.11 → Pythonバージョンまで固定

関連記事

カテゴリー

アーカイブ

Lang »