Комментарии 23
Тестовый пример
Комбо:eval
в коде, .rar-архив с исходниками, да ещё и на dimonvideo ...
Лично я помню, что импорт eval'ит файл. Просто нужно использовать соответствующие инструменты, вроде import_module. А в третьем питоне так вообще всё получше стало с динамическим импортом всякого.
У вас даже нет обработки ошибок при открытии файла. И кэш тоже не создастся, а это ускорит последующую загрузку.
Ну и да, почему питон-то второй? Киви и третью версию поддерживает.
Насчет третьего Python.
Не вижу плюсов перед второй веткой. В упор.
Насколько я знаю, для многих разработчиков — это именно та killer-feature чтобы перейти на 3-ю ветку.
И только? А сколько причин НЕ переходить на ртерью ветку? В десяткип раз больше!
Как и обсуждения eval в комментариях к этой статье, никто не может назвать хотя бы три адекватных причины, почему я должен переходить на третью ветку Python, кроме тех, что, мол, в Интернете все так делают!
1) Юникод
2) Type hints
3) Nonlocal, yield from, итераторы в коллекциях по-умолчанию. Много модулей, которые в 2,7 только в виде бэкпортов
Ну и 2-ю ветку всё меньше и меньше развивают. Новые фичи не бэкпортнутся.
Ждём десятки причин не переходить на третью ветку.
Например, в Python Package Index с Python 3… Сколько и какие пакеты вы можете поставить? Никто из крупных компаний не использует Python3 и не планирует переход не эту мертвую и убогую ветку. Пара тройка пакетов (даже не написанных, а ИНТЕГРИРОВАННЫХ под Python3) явно не устраивают плачущих горе-программистов, которые перешли не эту ветку. Жалобы "портируйте-портируйте-портируйте… " Этого достаточно или еще десяток превести?!
Никаких координальных прорывов в третьей ветки нет! Интерес к ней у разработчиков — постольку-поскольку имидж в сети...
А мертвая ветка как раз таки вторая, чей срок поддержки истекает в 2020 году (и изначальный план был полностью закрыть поддержку в 15 году, но Гвидо слишком добрый)
http://py3readiness.org/
330 из 360 самых популярных пакетов. В реальности, для тройки нет только уж совсем специфичных пакетов, которые и так не особо развиваются. Ещё причины есть?
Вы из этих программистов?
Насчет ошибок...
Для большей наглядности я убрал из модуля loadplugin.py верефикацию плагинов и различные проверки на отсутствие директории Plugins, файла plugins_list.list и пр.
Думаю, уж лучше они, чем предложенный.
Вы сначала переизобрели importlib, завернув это в декоратор (как паттерн), а затем применили… ООП.
В итоге, вместо обещанной плагинной системы имеем обычное приложение с модульную архитектурой и кучей overhead спагетти-кода впридачу.
Ничего личного:
Ваш код ужасен.
Вы, похоже, начинающий Python разработчик. Если это действительно так, то разумнее не публиковать свои <--велосипеды--> перочинные ножики на хабре. Хотя, делать их для себя — действительно хорошая идея.
Если же приложение собирает сам автор — можно было реализовать загрузку через сами плагины, типа MyPlugin.register(app). В этом случае получаем больше свободы — нет глобальных объектов, местонахождение непринципиально, структура плагина какая угодно.
Плагины в кармане или перочинный ножик в программе