Traffine I/O

日本語

2023-02-24

Poetry

Poetry とは

Poetryは、Python用の現代的なパッケージマネージャーであり、依存関係の管理やパッケージングのプロセスを簡素化します。Pythonのパッケージングや配布のためのベストプラクティスをサポートすると同時に、ユーザーフレンドリーで直感的なインターフェースを提供することを目指しています。

Poetryを使うことで、開発者はプロジェクトの依存関係を簡単に管理し、仮想環境を作成し、プロジェクトを配布することができます。また、依存関係の解決、セマンティックバージョニング、ロックファイルなどの機能を提供し、再現性のあるビルドを確保します。

Poetryは、Pythonコミュニティーで人気が高まっており、多くの開発者にとって必須のパッケージマネージャーとなっています。

Poetry のインストール

Poetryはpipを使用してインストールすることができます。Poetryのインストールは、いくつかの簡単なステップを踏むだけで行えます。

まず始めに、システムにpipがインストールされている必要があります。Python 3.4以降を使用している場合、pipはすでにインストールされているはずです。そうでない場合は、公式Pythonウェブサイトの提供する手順に従ってインストールすることができます。

pipがインストールされたら、Poetryのインストールを進めることができます。以下がその方法です:

  1. コマンドプロンプトまたはターミナルウィンドウを開き、次のコマンドを入力します。
bash
$ pip install poetry

このコマンドにより、pipが最新バージョンのPoetryをダウンロードし、インストールします。

  1. インストールを確認するために、次のコマンドを実行します。
bash
$ poetry --version

このコマンドは、インストールしたばかりのPoetryのバージョン番号を返します。

  1. (オプション) 以前のバージョンからPoetryをアップグレードする場合は、次のコマンドを使用して更新することができます。
bash
$ pip install --upgrade poetry

このコマンドにより、最新バージョンのPoetryがダウンロードされ、古いバージョンが置き換えられます。

これらの簡単な手順を実行することで、システムにPoetryがインストールされ、Pythonプロジェクトの依存関係を管理するために使用する準備が整います。Poetryを使用するためには、公式ドキュメントを参照して、より詳細な情報や例を確認することができます。

Poetry のコマンドと基本的な使用方法

Poetryには、Pythonプロジェクト、依存関係、およびパッケージングを簡単に管理できるようにする様々なコマンドが用意されています。ここでは、もっとも一般的に使用されるPoetryコマンドとその基本的な使用方法について、簡単に説明します。

コマンド 説明
poetry new プロジェクト名 このコマンドは、指定した名前の新しい Python プロジェクトを作成し、Poetry プロジェクトとして初期化します。
poetry add パッケージ名 このコマンドは、指定したパッケージをプロジェクトの依存関係に追加し、インストールします。
poetry remove パッケージ名 このコマンドは、指定したパッケージをプロジェクトの依存関係から削除し、アンインストールします。
poetry update パッケージ名 このコマンドは、指定したパッケージを最新版に更新し、プロジェクトの依存関係を更新します。
poetry install このコマンドは、プロジェクトの pyproject.toml ファイルにリストされている全てのパッケージをインストールします。
poetry show このコマンドは、プロジェクトにインストールされている全てのパッケージ、そのバージョン、および依存関係のリストを表示します。
poetry shell このコマンドは、プロジェクトの依存関係を含む仮想環境をアクティブにし、分離された環境で作業できるようにします。
poetry run スクリプト名 このコマンドは、プロジェクトの pyproject.toml ファイルから指定したスクリプトを実行します。
poetry lock このコマンドは、プロジェクトが必要とする各依存関係の正確なバージョンを指定するロックファイルを生成します。
poetry build このコマンドは、プロジェクトの配布用パッケージを「dist」ディレクトリにビルドします。

依存関係の管理

依存関係を管理することは、どのソフトウェアプロジェクトを開発する際にも重要であり、Poetryを使用するとPythonプロジェクトでの依存関係の管理が簡単になります。Poetryは強力なPythonパッケージマネージャであり、依存関係のインストールや管理を簡素化し、プロジェクト開発に集中できます。以下は、Poetryを使用した依存関係の管理方法です。

依存関係の追加

プロジェクトに新しい依存関係を追加するには、次のコマンドを実行します。

bash
$ poetry add package-name

「package-name」には、インストールするパッケージの名前を置き換えてください。このコマンドは、指定されたパッケージをインストールし、プロジェクトの依存関係に追加します。

依存関係の更新

依存関係を新しいバージョンに更新するには、次のコマンドを実行します。

bash
$ poetry update package-name

「package-name」には、更新したいパッケージの名前を置き換えてください。このコマンドは、指定されたパッケージを最新バージョンに更新し、プロジェクトの依存関係を更新します。

依存関係の削除

プロジェクトから依存関係を削除するには、次のコマンドを実行します。

bash
$ poetry remove package-name

「package-name」には、削除したいパッケージの名前を置き換えてください。このコマンドは、指定されたパッケージをプロジェクトの依存関係から削除します。

依存関係の一覧表示

プロジェクト内の全ての依存関係のリストを表示するには、以下のコマンドを実行します。

bash
$ poetry show

このコマンドは、プロジェクトにインストールされた全てのパッケージと、それらのバージョンおよび依存関係のリストを表示します。

ロックファイルの生成

必要な依存関係を全て追加したら、Poetryを使用して、プロジェクトに必要な各依存関係の正確なバージョンを指定するロックファイルを生成できます。ロックファイルを生成するには、以下のコマンドを実行します。

bash
$ poetry lock

このコマンドは、プロジェクトに必要な各依存関係の正確なバージョンを指定するロックファイルを作成し、プロジェクトが常に依存関係の正しいバージョンを使用するようにします。

これらの簡単なコマンドを使用することで、Poetryを使ってPythonプロジェクトの依存関係を簡単に管理できます。

pyproject.toml

pyproject.tomlは、現代的なPythonパッケージマネージャであるPoetryで使用される設定ファイルです。このファイルには、Pythonプロジェクトに関するメタデータやプロジェクトの依存関係、ビルド要件、その他の設定情報が含まれます。

以下は、pyproject.tomlの異なるセクションとその役割の概要です。

セクション 説明
[tool.poetry] このセクションには、Poetry の一般的な構成オプションが含まれます。例えば、プロジェクト名、バージョン、著者、ライセンスなどがあります。
[tool.poetry.dependencies] このセクションには、プロジェクトで必要な依存関係とそのバージョン制約がリストされています。 poetry addおよびpoetry removeコマンドを使用して、依存関係を追加または削除できます。
[tool.poetry.dev-dependencies] このセクションには、テストフレームワークやコード解析ツールなど、プロジェクトの開発に必要な開発用の依存関係がリストされています。これらの依存関係は、プロジェクトを実行するために必要ではありませんが、開発およびテストに必要です。
[tool.poetry.build-system] このセクションには、プロジェクトで使用されるビルドシステムが指定されています。デフォルトでは、Poetry は setuptools を使用しますが、flit や poetry などの他のビルドシステムを使用できます。
[tool.poetry.scripts] このセクションには、プロジェクトで提供されるコマンドラインスクリプトがリストされています。これらのスクリプトは、 poetry runコマンドを使用して実行できます。
[tool.poetry.extras] このセクションでは、特定の状況でのみ必要な追加の依存関係を定義できます。例えば、特定のデータベースを使用する場合にのみ必要なデータベースドライバーの「extras」セクションを定義することができます。
[build-system] このセクションは、 setuptools などのビルドツールによってビルド依存関係およびその他のビルド設定を指定するために使用されます。

poetry.lock

依存関係をPoetryでインストールすると、インストールされた各パッケージの正確なバージョン情報を含むpoetry.lockファイルが生成されます。このファイルは、特定のプロジェクトにインストールされた特定の依存関係のレコードとして機能し、プロジェクトがインストールまたは更新されるたびに同じ依存関係のバージョンがインストールされることを保証します。

以下は、poetry.lockファイルの機能についての説明です。

  • 依存関係のロック
    poetry installを実行すると、Poetryはpyproject.tomlファイルを読み込み、プロジェクトのための仮想環境を作成します。次に、仮想環境に必要な依存関係を、その正確なバージョンとともにインストールします。これにより、異なる環境やマシンで同じ依存関係のバージョンがインストールされることが保証されます。

  • バージョン管理
    poetry.lockファイルは、プロジェクトの依存関係のバージョン管理システムとして機能します。このファイルにより、プロジェクトがインストールまたは更新されるたびに同じバージョンの依存関係がインストールされるため、バージョンの競合を防ぎ、再現性が確保されます。

  • 競合の解決
    依存関係の競合がある場合、Poetryは複雑なアルゴリズムを使用して解決し、正しいバージョンの依存関係がインストールされるようにします。poetry.lockファイルには、これらの競合がどのように解決されたかに関する情報が含まれており、問題が発生した場合にトラブルシューティングを支援することができます。

  • 共同作業
    poetry.lockファイルは、Pythonプロジェクトの共同作業に必須です。全ての開発者が同じ依存関係のバージョンをインストールしていることを保証するため、共同作業がより容易になり、互換性の問題が発生する可能性が低くなります。

Poetry と requirements.txt の比較

Pythonの開発者は従来、プロジェクト内の依存関係を管理するために、requirements.txtというシンプルなテキストファイルを使用してきました。しかし、近年、Poetryという新しいPythonパッケージマネージャーが開発者の間で人気を博しています。以下は、これら2つのツールの違いを理解するためのPoetryとrequirements.txtの比較です。

  • 依存関係の管理
    Poetryとrequirements.txtの最大の違いは、依存関係の管理方法です。requirements.txtは単にパッケージの名前とバージョンをリストアップするだけですが、Poetryはプロジェクトごとに仮想環境を作成し、依存関係を管理します。これにより、依存関係を簡単に管理でき、各プロジェクトに必要な依存関係の正しいバージョンがインストールされるようになります。

  • ユーザーインターフェース
    Poetryは現代的で直感的なコマンドラインインターフェースを提供し、依存関係の管理やプロジェクトの配布パッケージの作成を簡単に行えます。一方、requirements.txtは、pipを使って依存関係を手動でインストールする必要があり、手間がかかりエラーが起こりやすいです。

  • パッケージ管理
    Poetryは依存関係マネージャーだけでなく、パッケージングツールでもあります。開発者は簡単な手順で配布可能なパッケージを作成することができます。requirements.txtは単にパッケージとそのバージョンの一覧であり、パッケージング機能はありません。

  • 設定
    Poetryは設定をpyproject.tomlファイルに保存するため、プロジェクトの設定と依存関係を1つの場所で管理することができます。一方、requirements.txtには設定ファイルがなく、開発者はプロジェクトの設定と依存関係を別々に管理する必要があります。

  • 互換性
    Poetryとrequirements.txtは両方とも異なるPythonバージョンと様々なPythonプロジェクトと互換性があります。しかし、Poetryはより高度な機能と使いやすいユーザーインターフェースを提供するため、多くの開発者にとって優先的な選択肢となっています。

参考

https://python-poetry.org/docs/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!