Убедиться, что пакет Python установлен хотя бы с одним дополнительным - PullRequest
1 голос
/ 26 сентября 2019

У меня есть общая http-клиентская библиотека, которая обеспечивает синхронизацию и асинхронность интерфейсов.Под ним используется либо requests, либо aiohttp.В большинстве моих проектов используется либо синхронная, либо асинхронная версия, поэтому нет оснований требовать как aiohttp, так и requests в setup.py.Для решения этой проблемы у меня есть следующее extras_require в setup.py:

extras_require={
    "async": ["aiohttp"],
    "sync": ["requests"],
    "all": ["aiohttp", "requests"],
}

Единственная проблема заключается в том, что если вы устанавливаете мой клиентский пакет http без каких-либо дополнительных функций, это не имеет смысла, так как вы не будетебыть в состоянии использовать обе версии из-за отсутствующих зависимостей.

Есть ли способ проверить, что мой пакет Python устанавливается по крайней мере с одним из указанных дополнений?Может быть какой-то крючок в моем setup.py?

1 Ответ

0 голосов
/ 27 сентября 2019

Нет простого решения, о котором я знаю.

Более сложное решение, о котором я могу подумать, - это опубликовать два других проекта с именами something-sync и something-async, которые имеют только одну отдельную зависимость каждый:something[sync] и something[async] соответственно (при условии, что ваш проект называется something).Это было бы относительно легко реализовать с помощью хороших инструментов CI / CD.

...