Как сделать plugin архитектуру пакетными средствами Python?
Хочется сделать так, чтобы функционал программы мог легко расширяться сообществом каким-то стандартным путем.
Например, делаем простую программу типа ls, она перебирает файлы, и вызывает все плагины для файла. Все плагины у нас унаследованы от нашего класса Plugin(). В комплекте есть только NamePlugin() который пишет имя файла.
Дальше пользователь делает "pip install lsplugins.filesize" ставит какой-то пакет (другого разработчика) и у нас появляется еще и FileSizePlugin() и наш ls еще и пишет размер файла. А если установить PluginMD5(), то будет еще и md5 суммы писать.
Как-то можно так сделать (пакет второго уровня, от другого разработчика)?
Хочется чтобы доп.функционал появлялся автоматически после "pip install ...", чтобы каким-то образом наш код узнавал о всех доступных плагинах.
P.S.
Есть всякие фреймворки для плагинов. Можно написать свой. Скидывать все плагины в какой-то каталог и импортировать их как файлы. Но это все некрасиво. Может быть есть стандартный питоновский путь.