Для системы, которую я использую в нескольких своих программах, я определяю каталог плагинов и предоставляю базовый класс плагинов для всех плагинов для подкласса.Затем я импортирую все модули в каталоге и выборочно инициализирую (проверяя, не являются ли они подклассами моего базового класса плагинов), и храню экземпляры плагинов в словаре (или списке).Я обнаружил, что шаблон отправки команд эффективно работал для меня как способ структурирования плагинов и передачи событий.Базовый плагин (или другой необязательный интерфейсный класс) может предоставлять методы, необходимые плагину для взаимодействия с приложением.Надеюсь, это поможет.Возможно, это не лучший способ сделать это, но это сработало для меня.
Кроме того, вы можете выполнить дополнительную фильтрацию, например, требовать, чтобы файлы плагинов имели префикс (например, __plug_file.py__
и __plug_other.py__
).