依存関係の管理
依存関係の管理 #
依存関係グループ #
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
を実行する場合に非常に役立ちます。