Skip to main content

Poetry とは?

Poetryとは、Pythonの依存関係とパッケージ管理を行うための革新的なツールです。Pythonプロジェクトの開発を容易にし、バージョン管理、依存関係の解決、パッケージの配布を効率的に行うことができます。

poetry でできること

  1. 依存関係の管理: Poetryは、プロジェクトで使用する外部パッケージやライブラリの依存関係を管理します。これにより、特定のバージョンのパッケージを使用することが容易になり、他の開発環境への移植性も向上します。
  2. バージョン管理: Poetryは、パッケージのバージョンを厳密に指定できるため、チーム全体で統一されたバージョンを使用することが可能です。これにより、開発環境の差異による問題を防ぎ、再現性を高めます。
  3. パッケージの配布: Poetryは、プロジェクトのパッケージングと配布をサポートします。プロジェクトをパッケージ化してPyPI(Python Package Index)にアップロードすることで、他の開発者が簡単に利用できるようになります。
  4. プロジェクトの作成: Poetryは新しいPythonプロジェクトを簡単に作成できるコマンドを提供します。プロジェクトの基本的なディレクトリ構造とファイルが自動的に生成されるため、開発者はすぐにコードの書き始めることができます。

インストール方法

pipを使ってインストールできます。

pip install poetry

使い方

よく使う機能について以下に示します。

新しいPythonプロジェクトを作る

まっさらな状態から新たにプロジェクトを作る場合は以下のコマンドを実行します。("sample_project"の部分は適宜変更する。)

poetry new sample_project

上記コマンドを実行すると、以下ディレクトリ・ファイルが生成されます。

sample_project
|-- README.md # README
|-- pyproject.toml # Poetryのメタデータや依存関係のファイル
|-- sample_project # このパッケージのソースコードを格納する場所
| `-- __init__.py
`-- tests # テストコードを格納する場所
`-- __init__.py

すでに存在するプロジェクトをPoetryで管理する場合

既にソースコードを書き始めている or pipなどで管理している場合は、以下のコマンドを実行します。CLIの指示に従って、各種パラメータを設定しましょう。

poetry init

This command will guide you through creating your pyproject.toml config.

Package name [sample_project_02]:
Version [0.1.0]:
Description []:
Author [None, n to skip]: user
License []:
Compatible Python versions [^3.7]:

<<中略>>

Do you confirm generation? (yes/no) [yes] yes

これにより、Poetryでパッケージ管理が可能となり、メタ情報や依存関係が記載されたファイルpyproject.tomlが生成されます。

pyproject.toml について

pyproject.toml は、パッケージのメタ情報や依存関係が記載されたファイルです。イメージとしては、setup.pyrequirements.txtに記載された情報をまとめた感じです。PEP規格に準拠したフォーマットであり、最近のpipでもパッケージのビルド・インストールができます。

主な書き方は以下の通りです。

[tool.poetry]
name = "sample-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sample_project"}]

# 必要なパッケージのバージョン
[tool.poetry.dependencies]
python = "^3.7"
opencv-python = "^4.8"

# 開発環境限定で必要なパッケージ
[tool.poetry.dev-dependencies]
pytest = "^5.2"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
info

パッケージやバージョンの指定方法について、詳細は公式docを確認してください.

仮想環境の作成

↑までの手順で作成したPoetry環境とpyproject.tomlを用いて、仮想環境の作成とパッケージのインストールを行います。コマンドは以下の通りです。

poetry install

もし、開発環境限定で必要なパッケージをインストールしない場合は、--no-dev オプションをつけて実行しましょう。

poetry install --no-dev

また、作成した仮想環境リストの確認、仮想環境の削除は以下のコマンドで実施します。

# 仮想環境リストの表示
poetry env list

# 仮想環境を削除
poetry env remove <env_name>

依存パッケージの追加

以下のコマンドで、パッケージを追加します。(以下はnumpyを追加する例.)

poetry add numpy

仮想環境で実行する

以下のいずれかで仮想環境上でPythonを実行できます。

poetry run python sample.py
poetry shell
python sample.py

参考文献