Python 開発者は、プロジェクトの依存関係を分離するために新しい仮想環境を作成し、pip や pipenv などのツールでそれらを管理することがよくあります。この記事では、Poetry を使って Fedora 上で Python プロジェクトを管理する方法を紹介します。
他のツールとは異なり、Poetry は依存関係の管理、パッケージング、配布に 1 つの設定ファイルのみを使用します。このため、Pipfile、MANIFEST.in、setup.py などの異なるファイルは必要ありません。また、複数のツールを使うよりも高速です。
以下は、Poetryを使い始めるためのコマンドの詳細です。
FedoraへのPoetryのインストール
すでに Fedora 32 以上をお使いの場合は、このコマンドを使ってコマンドラインから直接 Poetry をインストールできます:
$ sudo dnf install poetry
編集者注:Python 3.9.2 がコアコミットの一部である Fedora Silverblue または CoreOs では、以下のコマンドで Poetry をインストールできます:
rpm-ostree install poetry
プロジェクトの初期化
新規プロジェクトを作成するには、newコマンドを使用します:
$ poetry new poetry-project
ポエトリーで作成されたプロジェクトの構造は次のようになります:
_project│ └── init.pyプロジェクト.tomlREADME.rstテストinit.pyテスト_poetry_project.py
Poetryは pyproject.toml プロジェクトの依存関係を管理します。最初はこのようなファイルになっています:
[tool.poetry]name = "poetry-project"version = "0.1.0"description = ""authors = .Kadermiyanyedi\x20<kadermiyanyedi@hotmail.com>;[tool.poetry.dependencies]python = "^3.9"[tool.poetry.dev-dependencies]pytest = "^5.2"[build-system]requires = ["poetry>=0.12"]build-backend = "poetry.masonry.api"
このファイルには4つのセクションがあります:
- 最初のセクションには、プロジェクト名やプロジェクトのバージョンなど、プロジェクトを説明する情報が含まれています。
- 2番目の部分には、プロジェクトの依存関係が含まれています。これらの依存関係はプロジェクトをビルドするために必要です。
- 3番目のセクションには、開発依存関係が含まれています。
- パートIVでは、 PEP 715 準拠したビルドシステムについて説明します。
すでにプロジェクトを持っているか、独自のプロジェクトフォルダを作成しており、Poetryを使用したい場合は、プロジェクトでinitコマンドを実行してください。
$ poetry init
このコマンドを実行すると、プロジェクトを設定するための対話型シェルが表示されます。
仮想環境の構築
仮想環境を作成する場合、または既存の仮想環境をアクティブにする場合は、次のコマンドを使用します:
$ poetry shell
Poetryはデフォルトで /home/username/.cache/pypoetry プロジェクトに仮想環境を作成します。デフォルトのパスはPoetryの設定を編集することで変更できます。設定のリストを表示するには次のコマンドを使います:
$ poetry config --listcache-dir = "/home/username/.cache/pypoetry"virtualenvs.create = truevirtualenvs.in-project = truevirtualenvs.path = "{cache-dir}/virtualenvs"
設定変数 virtualenvs.in-project 変更して、プロジェクト・ディレクトリに仮想環境を作成します:
$ poetry config virtualenv.in-project true
依存関係の追加
プロジェクトの依存関係をインストールするには、 poetry add コマンドを使用します:
$ poetry add django
addコマンドに--devオプションを付けると、開発環境でのみ使用される依存関係を特定できます:
$ poetry add black --dev
addコマンドはパッケージのバージョンを追跡するためにp poetry.lockファイルを作成します。poetry.lock ファイルが存在しない場合、pyproject.toml にあるすべての依存関係の最新バージョンがインストールされます。poetry.lock が存在する場合、Poetry はプロジェクトを使用するすべての人が同じバージョンのパッケージを持っていることを保証するために、ファイルにリストされている正確なバージョンを使用します。
poetry install 使用して、現在のプロジェクトにあるすべての依存関係をインストールします:
$ poetry install
--no-dev 使用して、開発依存のインストールを防止します:
$ poetry install --no-dev
パッケージ一覧
show コマンドは利用可能なパッケージをすべて一覧表示します。treeオプションを指定すると、ツリー内のパッケージが一覧表示されます:
$ poetry show --treedjango 3.1.7 A high-level Python Web framework that encourages rapid development and clean, pragmatic design.アスギレフ>=3.2.10,<4ピッツ*└──sqlparse>=0.2.2
特定のパッケージの詳細を一覧表示するには、パッケージ名を含めます:
$ poetry show requestsname : requestsversion : 2.25.1description : Python HTTP for Humans.dependencies- certifi >=- chardet >=3.0.2,<5- idna >=2.5,<3- urllib3 >=1.21.1,<1.27
最後に、パッケージの最新バージョンを知りたい場合は、 --latest オプションを使います:
$ poetry show --latestidna 2. Internationalized Domain Names in Applicationsasgiref 3.3.1 3.3.1 ASGI specs, helper code, and adapters
詳細情報
ポエトリーの詳細はご覧ください。
経由:





