Всем привет!
Возник тут у меня такой базовый вопрос о разработке на Питоне, а вернее о разработке проектов посложнее простых скриптов, таких, в которых могут быть фичи, не доступные на таргет системе, и которые в таком случае необходимо отключать, не затрагивая работоспособность остальных фич (независимых от тех, которые отключаются).
Вот, например, есть у меня разные модули системы на Питоне, которые по сути обертки над сишными библиотеками, но которые (и обертки, и библиотеки) скорее всего установлены в типичном дистре Линукс для широкого круга пользователей. В этом случае может быть достаточно в требованиях по зависимостям доставить нужные пакеты.
Но что, если таких пакетов в дистре нет, и некоторые фичи из-за этого оказываются нерабочими?
В компилируемых языках можно на этапе конфигурирования сборки определить/задать нужный набор фич, и потом прокинуть их в препроцессор.
А как это обычно делается на Питоне? Специальный класс/модуль, который все модули с фичами импортирует с try/except на каждый импорт (который может зафейлиться) и который потом выдает конфиг доступных фич? Но это же какое-то УГ получается, нарушение принципа инкапсуляции модулей.
А как сделать это грамотно на Питоне?