плагинов у всех такое удивление вызывает?
У меня вызвало удивление, что он хочет из директории загружать плагин. Тогда непонятно, что делать с его зависимостями
Ну, смотря что за приложение. Там может быть что-то тривиальное, где не ожидается внешних зависимостей и сделать один файл проще чем городить систему пакетов.
Так там городить ничего и не надо, все же очень просто. На самом деле, импортировать файл по определенному пути, не затрагивая PYTHONPATH довольно нетривиальная задача. Намного проще просто взять и сделать уже пакеты, что будет еще и намного более расширяемым решением
максимально тривиальная
Как по мне, spec = importlib.util.spec_from_file_location('custom_ext', './custom_ext/__init__.py') module = importlib.util.module_from_spec(spec) sys.modules['custom_ext'] = module spec.loader.exec_module(module) выглядит не просто
Распространять потом плагины как будешь? Объяснять пользователю процесс установки вместо того чтобы "положи файл с плагином в папку". Да и что тут такого уж нетривиального, когда всё известно?
ну если ты хочешь ходить сложным путем, кто тебя остановит...
Ну, покажи, как простым путем взять и импортировать файл по определенному пути, не затрагивая PYTHONPATH
Плагины можно устанавливать пипом, в том числе и из файла. Вероятно, это может быть легче, чем в файл положить. Ну, и ничего не мешает класть зип, а потом при старте устанавливать их
Кстати, я это не сам придумал, а взял где-то из официальной документации
У нас само приложение уже в PYTHON_PATH. И где plugins вполне внутри приложения живёт. В простейшем случае этого достаточно чтобы делать в духе import_module(f"plugins.{file_name}") До всякого фен шуя вроде https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/ может просто дело не дойти.
Ну, как бы можно, но я думаю, что вариант с энтри поинтами совсем не сложный и гораздо более правильный
там нет подчеркивания. и нет, не уже но запилить свой питонпатх из описанного тобой - дело пары строк кода
Ещё раз. Подумай о пользователе приложения. Представь что это что-то для простых человаков. Ты им будешь инструкцию с pip install писать?
Ну, опечалался. И что значит "нет"?
Если нужна простота для пользователей, то они могут класть зипы, а ты просто их будешь добавишь их в PYTHONPATH и будешь импортить
Я вижу тут единственную проблему, что удаление плагинов не будет удалять ненужные зависимости
Обсуждают сегодня