Ubuntu 22.04でPythonの依存関係を管理するためにPoetryをインストールする方法

以下は、日本語での自然な言い回しの一つです。

「序論」

PoetryはPythonの依存関係マネージャーであり、Pythonプロジェクトのビルドやパッケージングも行えます。依存関係マネージャーとして、一貫性のある仮想環境の維持やコンテナ化に役立つツールが付属しています。さらに、requirements.txtなど他の形式の依存関係マネージメントとのワークフローの統合も可能なツールがあります。

このチュートリアルでは、公式のインストールスクリプトを使用してPoetryをインストールし、仮想環境でPoetryプロジェクトを設定し、プロジェクトの依存関係を追加してインストールします。

前提条件

  • An Ubuntu 22.04 server, set up according to our initial server setup guide for Ubuntu 22.04, with a non-root user with sudo privileges and a firewall enabled.
  • The latest version of Python 3 installed on your machine following Step 1 of how to install Python 3 and set up a programming environment on an Ubuntu 22.04 server.

ステップ1 – Poetryのインストール

Poetryの公式インストールスクリプトを使用して、Poetryをインストールします。このコマンドにより、インストールスクリプトがダウンロードされ、Poetryがシステムにインストールされます。このチュートリアルはUbuntu 22.04サーバーを対象としていますが、このインストールスクリプトはLinux、macOS、およびWSL(Windows Subsystem for Linux)を使用したWindows上で実行することも可能です。次のコマンドを入力してください。

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

 

…
[secondary_label Output]
Poetry (1.2.1) is installed now. Great!

To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
environment variable.

Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.

Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
…

インストールが完了すると、Poetryはコマンドラインでpoetryを使用できるようにするために、そのbinディレクトリをPATHに追加するように促します。Bashを使用しているUbuntuの場合、nanoまたはお好みのテキストエディタを使用して、~/.bashrcファイルを開くことでこれを行うことができます。

  1. nano ~/.bashrc

 

以下の行をファイルの末尾に追加してください。

「~/.bashrc」を日本語で自然に言い換えてください。1つのオプションで構いません。

ホームディレクトリの「.bashrc」

. . .
export PATH="/home/sammy/.local/bin:$PATH"

ファイルを保存して終了します。ナノでは、CTRL+Xで終了し、変更内容を保存するためにYを押します。

次に、現在のセッションに変更を適用してください。

  1. source ~/.bashrc

 

現在、ポエトリーのコマンドが使用可能であることを確認するには、次のコマンドを入力して現在のポエトリーのバージョンを表示してください。

  1. poetry –version

 

Output

Poetry (version 1.2.1)

今、Poetryの動作するインストールが完了し、Poetryプロジェクトの設定に進むことができます。

ステップ2 — 詩のプロジェクトの準備を行います。

新しい詩のプロジェクトを作成してください。このプロジェクトには、依存関係のインストールと管理に使用する仮想環境が付属しています。このチュートリアルでは、プロジェクト名を「sammy_poetry」としていますが、お好きな名前を選んでください。

  1. poetry new sammy_poetry

 

次に、新しいプロジェクトディレクトリに移動してください。

  1. cd sammy_poetry

 

新しいポエトリープロジェクトと必要なボイラープレートファイルが作成されました。新しく作成されたプロジェクトファイルを確認するには、lsコマンドを使用してください。

  1. ls

 

Output

README.md dist pyproject.toml sammy_poetry tests

Note

注意:既存のプロジェクトを使用したい場合、異なるコマンドを使用してPoetryがプロジェクトとして認識することができます。既存のプロジェクトのディレクトリに移動し、次のコマンドを入力してください:
poetry init

これにより、既存のプロジェクトに必要なすべてのファイルが作成され、このチュートリアルを新しいプロジェクトのように続けることができます。

ステップ3:依存関係の追加

依存関係をプロジェクトに追加する前に、Poetryが依存関係を保持するために使用するファイルを調査して理解することから始めます。Poetryのプロジェクトディレクトリには、依存関係のリストが含まれた自動生成されたpyproject.tomlファイルがあります。次の手順で開いて調査してください。

  1. nano pyproject.toml

 

以下の文を日本語で言い換えてください(1つのオプション):
pyproject.toml
[tool.poetry]
name = "sammy-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sammy_poetry"}]

[tool.poetry.dependencies]
python = "^3.10"


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

tool.poetry.dependenciesにリストされている依存関係に加えて、tool.poetryの下にはメタデータもあります。名前、メール、プロジェクトの説明など、このメタデータを自分の情報でカスタマイズしてください。build-systemブロックには、Poetryがパッケージをビルドする方法に関する仕様が現在含まれており、現時点では触れる必要はありません。

注目すべき点として、最新バージョンであるPython 3.10は、リソースを要求することがあり、システムによっては問題となる場合があります。ほとんどのPythonライブラリは、最低限バージョン3.8を必要とします。プロジェクトの依存関係として使用するPythonのバージョンを変更したい場合は、このチュートリアルのステップ4でバージョンの依存関係の指定方法を説明します。

現在の状態では、Python自体以外の依存関係はありません。Poetryはコマンドラインから直接プロジェクトに新しい依存関係を追加することができます。poetry addコマンドを使用することで、Poetryはtool.poetry.dependenciesブロックに依存関係の行を追加し、同時に依存関係をインストールします。

pyproject.toml ファイルを確認した後、エディターを終了してください。例として、人気のあるPythonのHTTPライブラリである requests をプロジェクトの依存関係に追加し、add コマンドを使用してインストールします。このライブラリは、最小限の雛形コードでHTTPリクエストを送信することができ、HTTPを介してインターフェースを持つアプリケーションに便利ですが、今回のデモンストレーションではどんなパッケージでも構いません。以下のコマンドを入力してください。

  1. poetry add requests

 

Output

Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs Using version ^2.28.1 for requests Updating dependencies Resolving dependencies… (0.3s) Writing lock file Package operations: 5 installs, 0 updates, 0 removals • Installing certifi (2022.9.24) • Installing charset-normalizer (2.1.1) • Installing idna (3.4) • Installing urllib3 (1.26.12) • Installing requests (2.28.1)

pyproject.toml ファイルに追加し、requests をインストールすると同時に、add コマンドは仮想環境の初期化も行います。さらに、requests には独自の依存関係もあります。Poetry は requests をインストールする前にこれらの依存関係を自動的にすべてインストールします。

以下の内容でpyproject.tomlファイルが更新されます。

pyproject.tomlは、Pythonプロジェクトの設定ファイルです。
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1"
. . .

以下の内容を日本語で言い換えます。一つのオプションで構いません:

これにより、常に必要な要求がインストールされます。^ は、インストールすべき最小限のバージョンを示し、それより高いバージョンも受け入れられます。

ステップ4 — 依存関係の削除と固定化

現在インストールされている依存関係と、pyproject.toml ファイルにリストされている依存関係との整合性を保つために、Poetry はロックファイルを使用しています。インストールプロセス中に Poetry は直接このファイルを読み込むため、依存関係を変更するために pyproject.toml ファイルを直接編集すると、次のようなエラーや警告が発生する可能性があります。

Output

. . . Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [–no-update]` to fix it. . . .

そのため、依存関係を削除したり、バージョンを編集したりする場合は、poetry remove コマンドを使用する必要があります。pyproject.toml ファイルを手動で編集することも可能ですが、ロックファイルにも考慮しなければならず、仮想環境を手動でアクティベートする必要があります。したがって、requests のバージョンを変更したい場合は、まずこのコマンドでそれを削除してください。

  1. poetry remove requests

 

Output

Updating dependencies Resolving dependencies… (0.1s) Writing lock file Package operations: 0 installs, 0 updates, 5 removals • Removing certifi (2022.9.24) • Removing charset-normalizer (2.1.1) • Removing idna (3.4) • Removing requests (2.28.1) • Removing urllib3 (1.26.12)

リクエストが削除されたので、次にピン留めの依存関係として再度追加することができます。依存関係によって、プロジェクトで特定のバージョンのライブラリを保持することがよくあります。これは、ライブラリが時間と共に変化することによる互換性の問題のためであり、プロジェクトを一貫している状態に保つのに有益です。これを依存関係のピン留めと呼びます。

以下は、日本語での一つのオプションです:
例えば、add コマンドを実行する際、デフォルトでは最新バージョンにリクエストが指定されますが、代わりに2.26.0という以前の有効なバージョンを指定しています。これは、requests の PyPI 履歴から見つかるものです。

  1. poetry add requests@2.26.0

 

Output

Updating dependencies Resolving dependencies… (0.3s) Writing lock file Package operations: 5 installs, 0 updates, 0 removals • Installing certifi (2022.9.24) • Installing charset-normalizer (2.0.12) • Installing idna (3.4) • Installing urllib3 (1.26.12) • Installing requests (2.26.0)

今、あなたのpyproject.toml ファイル内には以下が見つかります。

pyproject.toml の内容を日本語で自然に言い換えてください。
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "2.26.0"
. . .

これは、リクエストが常にバージョン2.26.0として特定されることを指定します。

結論

このチュートリアルでは、Poetryをインストールし、新しいプロジェクトまたは既存のプロジェクトの中でPoetryプロジェクトを作成しました。それに加えて、依存関係を追加し、それらの依存関係を仮想環境内でインストールしました。さらに、依存関係を追加する前に削除し、プロジェクト内でピン留めされた依存関係として追加しました。次に、このチュートリアルでは、Ubuntu 22.04上でPoetryを使用してPythonパッケージをPyPIに公開する方法についてもっと詳しく説明します。

コメントを残す 0

Your email address will not be published. Required fields are marked *