依存関係の管理

依存関係の管理 #

依存関係グループ #

Poetryは、依存関係をグループ別に整理する方法を提供します。例えば、プロジェクトのテストにのみ必要であったり、ドキュメントのビルドにのみ必要であったりする依存関係がある場合があります。

新しい依存関係グループを宣言するには、tool.poetry.group.<group> セクションを使用します。ここで、<group> は依存関係グループの名前です(例:test)。

[tool.poetry.group.test]  # This part can be left out

[tool.poetry.group.test.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
注記

すべての依存関係は、インストールの必要の有無にかかわらず解決されるため(グループ依存関係のインストールを参照)、グループ間で互換性がある必要があります

依存関係グループは、依存関係に関連付けられたラベルとして考えてください。それらの依存関係がデフォルトで解決およびインストールされるかどうかには影響しません。単に、依存関係を論理的に整理する方法です。

注記

tool.poetry.dependenciesで宣言された依存関係は、暗黙的なmainグループの一部です。

[tool.poetry.dependencies]  # main dependency group
httpx = "*"
pendulum = "*"

[tool.poetry.group.test.dependencies] pytest = "^6.0.0" pytest-mock = "*"

注記

暗黙的なmainグループ以外の依存関係グループには、開発プロセスに必要な依存関係のみを含める必要があります。それらのインストールは、Poetryを使用した場合のみ可能です。

実行時にプロジェクトに追加の機能を追加する依存関係のセットを宣言するには、代わりにextrasを使用します。Extrasは、エンドユーザーがpipを使用してインストールできます。

注記

dev依存関係グループの定義に関するメモ

Poetry 1.2.0以降、dev依存関係グループを定義する適切な方法は次のとおりです。

[tool.poetry.group.dev.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"

このグループ表記は、Poetry 1.2.0以降推奨され、それ以前のバージョンでは使用できません。以前のバージョンのPoetryとの下位互換性のために、dev-dependenciesセクションで宣言された依存関係は、自動的にdevグループに追加されます。そのため、上記の表記と次の表記は同等です。

# Poetry pre-1.2.x style, understood by Poetry 1.0–1.2
[tool.poetry.dev-dependencies]
pytest = "^6.0.0"
pytest-mock = "*"

Poetryはdev-dependencies表記から徐々に移行し、すぐに非推奨となるため、既存の開発依存関係を新しいgroup表記に移行することをお勧めします。

オプショングループ #

依存関係グループは、オプションとして宣言できます。これは、特定の環境または特定の目的でのみ必要な依存関係のグループがある場合に理にかなっています。

[tool.poetry.group.docs]
optional = true

[tool.poetry.group.docs.dependencies]
mkdocs = "*"

オプショングループは、installコマンドの--withオプションを使用して、デフォルトの依存関係に追加してインストールできます。

poetry install --with docs
警告
オプショングループの依存関係は、他の依存関係と共に依然として解決されるため、互換性を確保するために特別な注意が必要です。

グループへの依存関係の追加 #

addコマンドは、グループに依存関係を追加する推奨方法です。これは、--group (-G)オプションを使用して行います。

poetry add pytest --group test

グループがまだ存在しない場合、自動的に作成されます。

グループ依存関係のインストール #

デフォルトでは、poetry installを実行すると、すべての非オプショングループの依存関係がインストールされます。

注記
プロジェクトのデフォルトの依存関係セットには、tool.poetry.dependenciesで定義されている暗黙的なmainグループと、明示的にオプショングループとしてマークされていないすべてのグループが含まれています。

--withoutオプションを使用して、1つ以上のグループを除外できます。

poetry install --without test,docs

--withオプションを使用して、オプショングループを選択することもできます。

poetry install --with docs
警告

--without--withを組み合わせて使用​​した場合、--withoutが優先されます。例えば、次のコマンドは、オプションのtestグループに指定されている依存関係のみをインストールします。

poetry install --with test,docs --without docs

最後に、デフォルトの依存関係セットをインストールせずに、特定のグループのみの依存関係をインストールする場合があります。その目的のために、--onlyオプションを使用できます。

poetry install --only docs
注記

プロジェクトの実行時依存関係のみをインストールする場合は、--only main表記を使用できます。

poetry install --only main
注記

プロジェクトルートのみをインストールし、他の依存関係はインストールしない場合は、--only-rootオプションを使用できます。

poetry install --only-root

グループからの依存関係の削除 #

removeコマンドは、特定のグループからパッケージを削除するための--groupオプションをサポートしています。

poetry remove mkdocs --group docs

依存関係の同期 #

Poetryは、依存関係の同期と呼ばれるものをサポートしています。依存関係の同期では、poetry.lockファイル内のロックされた依存関係のみが環境に存在し、不要なものがすべて削除されます。

これは、installコマンドの--syncオプションを使用して行います。

poetry install --sync

--syncオプションは、依存関係グループ関連のオプションと組み合わせて使用して、特定のグループと環境を同期できます。Extrasは別個であることに注意してください。インストール用に選択されていないExtrasは、--syncに関係なく常に削除されます。

poetry install --without dev --sync
poetry install --with docs --sync
poetry install --only dev
注記
--syncオプションは、現在非推奨となっている--remove-untrackedオプションに取って代わります。

オプショングループのレイヤリング #

--syncオプションを省略すると、既にインストールされているオプショングループを削除せずに、オプショングループの任意のサブセットをインストールできます。これは、マルチステージDockerビルドなど、異なるビルドステージで複数回poetry installを実行する場合に非常に役立ちます。