パッケージ管理ツール「poetry」とは。複数人開発にオススメツールを紹介

poetryのアイキャッチ IT

はじめに

Python開発において、依存パッケージの管理は非常に重要な作業です。特に複数人で開発を進める場合、環境の違いによるトラブルが頻発することもあります。そこで今回は、依存関係の管理とビルド、パッケージ公開まで一貫してサポートするパッケージ管理ツール 「poetry」 を紹介します。
実際のコマンド例を交えながら、poetryがどのように複数人開発を助けるかを具体的に解説していきます。

poetryは、複数人開発の際にpackage管理できる非常にオススメなツールとなります。しかし、もしこれらについて理解が難しい場合は、経験豊富な方とマンツーマンで学習していくのもオススメです。

poetryとは?

poetryは、Pythonプロジェクトの依存パッケージ管理とビルドプロセスをシンプルかつ一貫性のあるものにするツールです。従来、Pythonではpipとvirtualenvを組み合わせて環境を作ったり、requirements.txtを手作業で管理したりしていましたが、poetryを使えばこれらを一元管理できます。

簡単に言うと、poetryで作った環境を渡し、「poetry install」「poetry run」することで他の人が作ったpackage(version含む)環境下で実行できます。

他の人が作ったpackageが足りない! package verのせいで出力結果が変わる! みたいなことがなくなります。

poetryの特徴

  • 依存パッケージのインストールと管理
  • 仮想環境(virtualenv)の自動作成
  • バージョン固定管理(poetry.lock)
  • パッケージのビルド・配布機能
  • プロジェクトテンプレートの作成支援

これらの機能が揃っているため、Python開発のベストプラクティスを簡単に実現できます。

poetryの使い方

それでは、実際にpoetryの使い方を見ていきます。公式ページは下記になるので、参考ください。

Introduction | Documentation | Poetry - Python dependency management and packaging made easy
Introduction Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will mana...

ステップ①:pythonのインストール

poetryを活用するにはpython3.9以上が2025年4月時点で必要だそうです。pythonをインストールしていない方は公式からダウンロードしましょう。

Download Python
The official home of the Python Programming Language

ステップ②:poetryのインストール

下記のコマンドでpoetryをインストールします。

pipx install poetry

ステップ③:poetryプロジェクトの作成

下記のコマンドを打つと”poetry-demo”フォルダが生成され、その中に必要なファイル類がインストールされます。

poetry new poetry-demo

poetry-demo内には下記のファイルが生成されます。

poetry-demo
├── pyproject.toml
├── README.md
├── src
│   └── poetry_demo
│       └── __init__.py
└── tests
    └── __init__.py

以上で、poetry環境の作成は終わりになります。

pyproject.tomlは最も重要なファイルになります。このファイルによってプロジェクトとその依存関係がオーケストレーションされます。

poetryの環境構成コマンド

下記がpoetry環境構成コマンドとなります。

新しいpackageを入れたい場合、管理したい場合は下記のコマンドを打っていきます。

packageの追加

poetry内の環境にパッケージを新しく入れる場合は、下記のように書きます。

pandasの場合は「poetry add pandas」とします

poetry add パッケージ名

packageの削除

poetry内の環境からパッケージを削除する場合は、下記のように書きます。

pandasの場合は「poetry remove pandas」とします。

poetry remove パッケージ名

packageの表示

実際に入れられたpackageを表示するには、下記のコマンドを書きます。

poetry show

poetry環境のインストール

他の方が作ったpoetry環境をインストールするには下記コマンドを入れます。

その場合は、pyproject.tomlがあることが必要です。ここに書かれた依存関係を加味したpackageをインストールします。そのため、他の方が作ったこのファイルや環境をインストールすることができます。

poetry install

poetry環境でプログラムをrunする

下記の中にmain.pyというファイルを作ったうえで、poetry環境をrunしてみます。

実行ファイルmain.pyの作成

下記のディレクトリの中にmain.pyを作成します。

poetry-demo
├── pyproject.toml
├── README.md
├── src
│   └── poetry_demo
│       └── __init__.py
│       └── main.py
└── tests
    └── __init__.py

main.pyには下記の内容を入れます。

# main.py
import lightgbm as lgb
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# データ作成
X, y = make_classification(n_samples=100, n_features=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# LightGBM用データに変換
train_data = lgb.Dataset(X_train, label=y_train)

# モデル学習
model = lgb.train({'objective': 'binary'}, train_data, num_boost_round=50)

# 予測と評価
y_pred = model.predict(X_test)
y_pred_label = (y_pred > 0.5).astype(int)
print("Accuracy:", accuracy_score(y_test, y_pred_label))

poetry環境での実行

下記のコマンドを打っていきます。poetry run python~~ で実行をすることができます。

lightgbm, sklearnが必要なので、poetry addで入れた後に実施していきます。

poetry add lightgbm
poetry add scikit-learn
poetry run python src/poetry_demo/main.py

実行が行われ、精度が表示されました!

まとめ

poetryはpackageの管理に非常に便利です。pyproject.toml、poetry.lockファイルとともにプログラムを渡し、poetry installコマンドを打つことで他人の環境を簡単に作ることができます。

実際に自分も開発で使っていますが、非常に便利なツールでした。dependencyの解消も自動でやってくれるので、packageが増えてきたときもオススメです。

poetryを学ぶのにオススメの方法

スクール:現役データサイエンティストに教えてもらう

poetryや仮想環境はデータ分析や開発でよく用いられますが、重要な基礎知識のため、しっかりと理解することが重要です。ただ、しっかりと理解しながら進めるには適切なメンターなどがいた方が安心です。スクールなどに入り、アドバイスしてもらいながら進めるのも良いでしょう。

データサイエンティストになるためにオススメのスクール5選。
はじめに近年、多くの企業でデータ活用が進み、AIやデータ分析への期待がますます高まっています。そのため、データサイエンティストは現代のビジネス界で最も需要のある職業の一つです。データ分析、機械学習、統計学、プログラミングなど多岐に...

コメント

Copied title and URL