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バージョンまで固定