170 похожих чатов

Хм... Я понимаю, что человек мудрит, но почему обычная система

плагинов у всех такое удивление вызывает?

17 ответов

25 просмотров

У меня вызвало удивление, что он хочет из директории загружать плагин. Тогда непонятно, что делать с его зависимостями

evle- Автор вопроса
Pavel Павлик
У меня вызвало удивление, что он хочет из директор...

Ну, смотря что за приложение. Там может быть что-то тривиальное, где не ожидается внешних зависимостей и сделать один файл проще чем городить систему пакетов.

evle
Ну, смотря что за приложение. Там может быть что-т...

Так там городить ничего и не надо, все же очень просто. На самом деле, импортировать файл по определенному пути, не затрагивая PYTHONPATH довольно нетривиальная задача. Намного проще просто взять и сделать уже пакеты, что будет еще и намного более расширяемым решением

Zart
максимально тривиальная

Как по мне, 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) выглядит не просто

evle- Автор вопроса
Pavel Павлик
Так там городить ничего и не надо, все же очень пр...

Распространять потом плагины как будешь? Объяснять пользователю процесс установки вместо того чтобы "положи файл с плагином в папку". Да и что тут такого уж нетривиального, когда всё известно?

Pavel Павлик
Как по мне, spec = importlib.util.spec_from_file_...

ну если ты хочешь ходить сложным путем, кто тебя остановит...

Zart
ну если ты хочешь ходить сложным путем, кто тебя о...

Ну, покажи, как простым путем взять и импортировать файл по определенному пути, не затрагивая PYTHONPATH

evle
Распространять потом плагины как будешь? Объяснять...

Плагины можно устанавливать пипом, в том числе и из файла. Вероятно, это может быть легче, чем в файл положить. Ну, и ничего не мешает класть зип, а потом при старте устанавливать их

Zart
ну если ты хочешь ходить сложным путем, кто тебя о...

Кстати, я это не сам придумал, а взял где-то из официальной документации

evle- Автор вопроса
Pavel Павлик
Ну, покажи, как простым путем взять и импортироват...

У нас само приложение уже в PYTHON_PATH. И где plugins вполне внутри приложения живёт. В простейшем случае этого достаточно чтобы делать в духе import_module(f"plugins.{file_name}") До всякого фен шуя вроде https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/ может просто дело не дойти.

evle
У нас само приложение уже в PYTHON_PATH. И где plu...

Ну, как бы можно, но я думаю, что вариант с энтри поинтами совсем не сложный и гораздо более правильный

evle
У нас само приложение уже в PYTHON_PATH. И где plu...

там нет подчеркивания. и нет, не уже но запилить свой питонпатх из описанного тобой - дело пары строк кода

evle- Автор вопроса
Pavel Павлик
Ну, как бы можно, но я думаю, что вариант с энтри ...

Ещё раз. Подумай о пользователе приложения. Представь что это что-то для простых человаков. Ты им будешь инструкцию с pip install писать?

evle- Автор вопроса
evle
Ещё раз. Подумай о пользователе приложения. Предст...

Если нужна простота для пользователей, то они могут класть зипы, а ты просто их будешь добавишь их в PYTHONPATH и будешь импортить

Pavel Павлик
Если нужна простота для пользователей, то они могу...

Я вижу тут единственную проблему, что удаление плагинов не будет удалять ненужные зависимости

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта