コンテンツにスキップ

poetry

poetrypipenvと同様の課題を解決するために作られたサードパーティ製のパッケージ管理ツールです。

poetry 公式サイト

https://python-poetry.org/

poetry を使った場合の仮想環境の作成からパッケージのインストールまでの手順は下記のとおりです。

操作 コマンド
仮想環境の作成 なし(暗黙的に作られる)
仮想環境を有効にする poetry shell
仮想環境を無効にする exit
パッケージのインストール poetry add [name]

インストール

poetry のインストールは下記のようにします。

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

PowerShell 上で下記を実行します。

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

使い方

まず作業ディレクトリを用意します。

$ mkdir sandbox

次に poetry の設定ファイルを生成するコマンドを実行します。

$ poetry init -n

コマンドを実行すると pyproject.toml というファイルが作成されます。

次に pipenv のときと同様に requests をインストールしてみます。

$ poetry add requests

pipenv の使い方で使用したソースコードを実行するには下記のようにします。

$ poetry shell
(.venv) $ python main.py

上記の 2 行のコマンドは次のように 1 行で実行することもできます。

$ poetry run python main.py

pyproject.toml と poetry.lock

pyproject.toml は poetry の設定ファイルです。pipenv でいうところの Pipfile と同じ位置づけのファイルになります。

pyproject.toml

[tool.poetry]
name = "sandbox"
version = "0.1.0"
description = ""
authors = ["..."]

[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.24.0"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

poetry.lock はインストールしたパッケージのバージョンを保存しているファイルです。pipenv でいうところの Pipfile.lock と同じ位置づけのファイルになります。

pipenv の場合 PipfilePipfile.lock の内容をもとにパッケージをインストールするには下記のようにコマンドを使い分ける必要がありました。

使用ファイル コマンド
Pipfile pipenv install
Pipfile.lock pipenv sync

poetry にも同等の機能があるのですが pyproject.toml の内容をもとにパッケージをインストールする場合も poetry.lock の内容をもとにパッケージをインストールする場合もコマンドは同じです。

$ poetry install

pyproject.tomlpoetry.lock の両方がある場合は poetry.lock の内容が優先されるという仕組みになっています。

pipenv との違い

詳細は割愛しますが poetry の方が pipenv よりも機能が豊富です。また pyproject.tomlpoetry 専用の設定ファイルではなく Python が公式に策定したパッケージ管理用の設定ファイルになっているため、他のパッケージ管理ツールの設定ファイルとしても使われます。pip も新しいバージョンでは pyproject.toml を使用することができるようになっています。