xenon
@xenon
Too drunk to fsck

Как сделать plugin архитектуру пакетными средствами Python?

Хочется сделать так, чтобы функционал программы мог легко расширяться сообществом каким-то стандартным путем.

Например, делаем простую программу типа ls, она перебирает файлы, и вызывает все плагины для файла. Все плагины у нас унаследованы от нашего класса Plugin(). В комплекте есть только NamePlugin() который пишет имя файла.

Дальше пользователь делает "pip install lsplugins.filesize" ставит какой-то пакет (другого разработчика) и у нас появляется еще и FileSizePlugin() и наш ls еще и пишет размер файла. А если установить PluginMD5(), то будет еще и md5 суммы писать.

Как-то можно так сделать (пакет второго уровня, от другого разработчика)?

Хочется чтобы доп.функционал появлялся автоматически после "pip install ...", чтобы каким-то образом наш код узнавал о всех доступных плагинах.

P.S.
Есть всякие фреймворки для плагинов. Можно написать свой. Скидывать все плагины в какой-то каталог и импортировать их как файлы. Но это все некрасиво. Может быть есть стандартный питоновский путь.
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
https://packaging.python.org/guides/creating-and-d...
Кажется, стандартный путь всё-таки есть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы