【Python】Poetryの使い方!インストールから丁寧に解説

Python
この記事は約8分で読めます。
スポンサーリンク

PoetryはPythonのパッケージ管理と依存関係管理を簡単にするためのツールです。特にPythonプロジェクトでの仮想環境の作成、パッケージのインストール、依存関係の管理、プロジェクトのパッケージングと公開を効率的に行うことができます。ここでは初心者向けに、Poetryの基本的な使い方をインストールから仮想化、venvとの使い分けやPyPIでの公開方法まで丁寧に解説します。

  • Poetryをインストールして使ってみたい
  • Poetryの基本的な使い方を知りたい

結論: Poetryの使い方

Poetryのインストールを含む、基本的な使い方は下記のとおりです。それぞれ各セクションで詳しく解説していきます。

  • Poetryのインストール
    pip install poetry
  • プロジェクトの作成
    poetry new my-project
  • 依存関係 (パッケージ・ライブラリ) の追加
    poetry add pandas
  • 仮想環境の使用
    poetry shell

なお、Poetryとは、Python で依存関係を管理およびパッケージ化するためのツールです。これを使用すると、プロジェクトが依存するライブラリを宣言でき、ライブラリが管理 (インストール/更新) されます。 Poetry自体のより詳しい解説についてはPoetry公式ドキュメントをご確認ください。

Poetryのインストール方法

Poetryはpipコマンドを使用して簡単にインストールすることができます。コマンドシェルを使用して、下記のスクリプトを実行してください。

pip install poetry

より詳細な説明はPoetryの公式ドキュメントを確認してください。その後、下記のコマンドでPoetryを自動ロードされるように設定します。

poetry completions bash >> ~/.bash_completion

なお、この方法は厳密にはシステムのPython環境に依存するインストール方法となっていますので、気になる方は公式インストーラーを使う方法を確認してください。

Poetryを使用して仮想環境を作成・使用する方法

次に、インストール済みのPoetryを使用して仮想環境を構築する方法をご紹介します。ここでは、下記の動作を解説しています。

Poetryを使用した新しいプロジェクトの作成

まず初めに、Poetryのnewコマンドを使用して新しいプロジェクトを作成していきます。ここでは、my-projectとしていますが、任意のプロジェクト名を使用してください。また、カレントディレクトリをルートとしてプロジェクトを作成したい場合は.でOKです。

poetry new my-project
Poetryで新プロジェクトを作成

もしプロジェクトを削除したい場合は通常通りディレクトリを削除するので問題ありません。

依存関係 (パッケージ・ライブラリ) の追加

次に、依存関係 (パッケージ・ライブラリ) を追加する方法をご紹介します。こちらは通常のpip install {ライブラリ名}に該当するコマンドとなります。新しいプロジェクトにcdコマンドで移動後に、下記のPoetryコマンドを実行してください。

poetry add pandas

これにより、pandasライブラリとその依存関係が仮想環境内にインストールされています。

Poetryでライブラリを追加
発展: venvとの仮想環境管理の違い

Poetryはvenvとは異なり、デフォルトでカレントワーキングディレクトリ(CWD)内に仮想環境を作成しません。代わりに、Poetryはユーザーのホームディレクトリの下にある専用の場所(例えばLinuxやMacOSでは~/.cache/pypoetry/virtualenvs)に仮想環境を作成します。これにより、異なるプロジェクト間で仮想環境を共有することなく、それぞれのプロジェクトの依存関係が隔離され、管理が容易になり、下記のようなメリットがあります。

  1. 環境の整理が容易: 仮想環境がプロジェクトの外に配置されることで、環境を一元的に管理しやすくなります。プロジェクトディレクトリが環境ファイルで混雑することがなく、ソースコードと環境を分離して扱えます。
  2. キャッシュの有効活用: Poetryは仮想環境をユーザーレベルで管理するため、異なるプロジェクトで同じ依存関係を使用する場合に、それらを再利用することができます。これにより、環境のセットアップ時間が短縮されます。
  3. 衝突の回避: プロジェクト内に仮想環境を作成すると、プロジェクトを移動またはコピーする際に環境がそのまま移行されるとは限らず、問題が発生することがあります。しかし、Poetryの管理方式ではこの問題を回避できます。

もしもPoetryを使ってプロジェクトのディレクトリ内に仮想環境を作成したい場合は、設定を変更することができます。Poetryの設定ファイルであるpyproject.tomlまたは環境変数を通じて、仮想環境の保存場所をカスタマイズすることが可能です。以下のコマンドを使用して設定を変更できます。

poetry config virtualenvs.in-project true

仮想環境の使用

これまでに作成・依存環境をインストールした仮想環境は、Poetryのプロジェクトごとに管理されています。この仮想環境を有効にしてプロジェクトを操作するには、次のコマンドを実行します。

poetry shell

これにより、pyproject.tomlに指定された仮想環境が有効化されていることが分かります。

Poetryを使用した仮想環境の有効化

プロジェクトのビルドと公開

ここまで作成したプロジェクトをビルドするためには下記のコマンドを実行します。これにより、Poetryはpyproject.tomlに定義されている設定に基づいてビルドプロセスを開始します。このファイルにはプロジェクトの名前、バージョン、依存関係などが含まれています。

poetry build

ビルドプロセス中に、Poetryは以下の二つの形式でパッケージを生成します。

  • ホイール形式 (.whl): ホイール形式は、ビルドされた配布パッケージであり、インストールが高速です。Pythonの新しい標準的な配布形式として広く採用されています
  • ソースアーカイブ形式 (.tar.gz): ソースアーカイブは、プロジェクトのソースコードを含む圧縮ファイルです。ユーザーはこのアーカイブをダウンロードし、自身でビルドすることが可能です。

ビルドが成功すると、distディレクトリがプロジェクトのルートに作成され、その中に.whlファイルと.tar.gzファイルが保存されます。

Poetryを使用したビルド

その後、このプロジェクトをPyPIに登録するためのステップは下記のとおりです。

  1. PyPIへの登録:
    • パッケージを公開する前に、PyPIにユーザーアカウントを作成し、APIトークンを取得する必要があります。これにより、PoetryがPyPIにパッケージをアップロードする際の認証が可能になります。
  2. 設定の更新:
    • Poetryの設定を更新して、生成されたAPIトークンをPoetryに登録します。これは以下のコマンドで行います。
  3. パッケージのアップロード:
    • ビルドしたパッケージをPyPIにアップロードするには、以下のコマンドを使用します。
      poetry config pypi-token.pypi {取得したPyPIのAPIキー}
    • このコマンドは、distディレクトリ内のファイルをPyPIにアップロードし、全世界のPythonユーザーがpip install {パッケージ名}を使用してインストールできるようになります。
      poetry publish

他にPoetryで使用機会が多いコマンドの使い方

poetry update

このコマンドはプロジェクトの依存関係を最新のバージョンに更新します。pyproject.tomlで指定されたバージョン制約に基づいて依存パッケージを更新し、poetry.lockファイルも同時に更新します。

poetry update

特定のパッケージだけを更新したい場合は、パッケージ名をコマンドに追加します。

poetry update pandas
poetry run

このコマンドはPoetryが管理する仮想環境内で任意のコマンドを実行します。これにより、仮想環境をアクティブにすることなく、環境内のPythonスクリプトやツールを直接実行できます。

poetry run python script.py
poetry lock

poetry lockコマンドはpoetry.lockファイルを生成または更新しますが、パッケージのインストールは行いません。これは依存関係の解決を行い、現在の依存関係の状態をロックファイルに保存する際に便利です。こちらはpip freezeに似た機能を提供します。

poetry lock
poetry install

このコマンドはpyproject.tomlpoetry.lockファイルに基づいて依存関係をインストールします。プロジェクトを初めてセットアップするときや、他の開発者とプロジェクトを共有するときに特に重要です。このコマンドは既に依存関係が解決されていると仮定し、poetry.lockに基づいて正確に同じバージョンをインストールします。

poetry install
poetry remove

プロジェクトからパッケージを削除する場合にこのコマンドを使用します。これにより、指定されたパッケージがpyproject.tomlpoetry.lockから削除されます。

poetry remove requests
poetry show

インストールされているパッケージのリストを表示したり、特定のパッケージの詳細情報を確認したりするときにこのコマンドが役立ちます。

poetry show

特定のパッケージに関する詳細情報を得るには下記の通り、後ろにライブラリ名を指定します。

poetry show pandas

これらのコマンドは、Poetryを用いたPythonプロジェクトの管理を効率的かつ効果的に行うために不可欠です。日々の開発作業において、これらのコマンドを適切に使用することで、プロジェクトの依存関係を維持し、問題が発生した際のトラブルシューティングを容易にすることができます。

おわりに

以上が、Poetryのインストールなどの基本的な使い方のご紹介となります。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

タイトルとURLをコピーしました