Python поэзия - как установить необязательные зависимости? - PullRequest
2 голосов
/ 01 апреля 2020
Диспетчер поэтических зависимостей

Python позволяет задавать необязательные зависимости с помощью команды:

$ poetry add --optional redis

Что приводит к такой конфигурации:

[tool.poetry.dependencies]
python = "^3.8"
redis = {version="^3.4.1", optional=true}

Однако как вы на самом деле их устанавливаете? Документы, кажется, намекают на:

$ poetry install -E redis

, но это просто бросает и ошибка:

Installing dependencies from lock file

[ValueError]
Extra [redis] is not specified.

1 Ответ

2 голосов
/ 02 апреля 2020

Вам необходимо добавить группу tool.poetry.extras в pyproject.toml, если вы хотите использовать флаг -E во время установки, как описано в этом разделе документации:

[tool.poetry.extras]
caching = ["redis"]

Ключ относится к слову, которое вы используете с poetry install -E, а значением является список пакетов, которые были помечены как --optional, когда они были добавлены. В настоящее время нет поддержки для включения дополнительных пакетов в указанную группу c во время их добавления, поэтому вам нужно поддерживать их вручную.

Причина этого дополнительного уровня абстракции заключается в том, что дополнительные установки обычно относятся к некоторым дополнительным функциям, которые включаются посредством установки одной или нескольких зависимостей. poetry просто имитирует setuptools 'определение дополнительных установок здесь, что может объяснить, почему это так редко документировано.

...