Лучший способ выяснить порядок загрузки для плагинов? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть система, которая загружает плагины во время выполнения.Эти плагины в основном являются обычными классами Python с некоторыми метаданными, такими как версия (например, «1.0.1») и списком зависимостей, которые могут выглядеть следующим образом (скажем, это для PluginA):

["PluginB>=2.0","PluginC==1.1"]

дляВ версиях и спецификаторах я использую модуль «Упаковка».Что мне нужно, это выяснить порядок, в котором я могу загрузить плагины.К сожалению, мне все еще приходится использовать Python 2.7. Я загружаю классы с помощью

    imp.load_source

. Такова ситуация, и у меня есть два главных вопроса: Главная проблема заключается в том, что если плагину A нужен B, то A будетпопробуйте импортировать B до загрузки B.Это, конечно, вызывает исключение.Будет ли выяснить порядок загрузки плагинов в помощь с этим.Я не знаю достаточно о том, как работает оператор импорта ...

А если поможет выяснение порядка: как бы вы это сделали?Моя идея состояла в том, чтобы построить какой-нибудь граф или дерево с плагинами (A, B, C, D ....) в качестве узлов и использовать зависимости в качестве ребер.

Это могло бы работать, но у меня нетИдея, как связать узлы, не делая петлю за петлей за петлей.Все, что я до сих пор пробовал, заканчивалось полным беспорядком.Принятие во внимание спецификаторов еще более запутанно

...