LINUX.ORG.RU

Как сделать десктопное приложение с python-бэкендом

 ,


0

2

Написал GUI приложение на Python с использованием PySimpleGUI.

Теперь хочу разделить его на фронтенд и бэкенд и сделать его кросс-платформенным, но не знаю, как это сделать более правильно. Желательно при этом получить 1 бинарник, который можно просто запустить и работать.

Можно, конечно, его просто скомпилировать через Pyinstaller под любую платформу, но может быть есть более интересные варианты, например flask + flutter (не знаю, можно ли будет это собрать в единый файл потом)?

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

Желательно при этом получить 1 бинарник, который можно просто запустить и работать

Вы сначала разберитесь, что такое фронт и что такое бэк, и уточните что же вы всё-таки хотите?

Полноценное приложение с клиент-серверной архитектурой или же вариант кроссплатформенного распространения.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

вариант кроссплатформенного распространения

Второе, но сейчас мой код выглядит как 3 класса на 750+ строк, что сложно чинить, и в целом читать. Хочу разбить это на большее количество модулей и так, чтобы GUI просто вызывал отдельные функции и можно было легко поменять или GUI или основные функции.

the_real_kinik ★★
() автор топика
Ответ на: комментарий от the_real_kinik

Изучи паттерны проектирования. Для GUI, для твоих целей есть mvc, mvvm и подобные. MVC можно применять и с pysimplegui.

Landgraf ★★★★★
()
Последнее исправление: Landgraf (всего исправлений: 1)

Ты хочешь десктопную приложуху с серверной архитектурой? Зачем? Не, ну если очень хочется то пусти multiprocessing, в одном сервер в другом клиент. Потом какой-нибудь pyinstaller или freeze или прочие чтоб сделать бинарь

Но идея так себе, если честно

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

@upcFrost, @Aswed

Про разделение на сервер-клиент прочитал на StackExchange в ответ на вопрос, как совместить Python и Flutter, но это действительно плохая идея – оверинжиниринг на ровном месте.

the_real_kinik ★★
() автор топика
Ответ на: комментарий от x905

Пользоваться программой будут инженеры неайтишники, поэтому чем проще запустить программу, тем больше вероятность, что ей будут пользоваться. А в дальнейшем, возможно, выложим ее в общий доступ. Когда будет не стыдно показывать общественности.

the_real_kinik ★★
() автор топика
Ответ на: комментарий от the_real_kinik

не самый простой кейс, но возможно и такое делать, есть нативный компонент dialog, с которым пару лет назад я помню один косяк в некоторых не очень популярных браузерах, который я тогда как-то тогда обошел (кажется рендерил дивами в этих кривобраузерах)

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog

вместе со своими компонентами CustomElements и можно делать модульный код любой сложности, простой пример реализации можно посмотреть тут:

https://bitbucket.org/skinny-widgets/sk-dialog/src/master/

Но конечно стартовать вместо браузера свое приложение после сервера никто впринципе не запрещает. Хотя в духе линукс-вея надо просто чтобы было два пакета: один из которых стартуется сервисом systemd/init, а другой - который с гуем запускается с иконки.

Syncro ★★★★★
()
Ответ на: комментарий от the_real_kinik

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

myProgSetup.exe + myProg.deb и проблема решена инсталлятор еще и иконку на раб-стол сделает

чем проще запустить программу, тем больше вероятность, что ей будут пользоваться

больше вероятность, что будут пользоваться полезной программой, а не той которая запускается «просто» )

x905 ★★★★★
()
Ответ на: комментарий от vvn_black

Ну и ещё один просто убийственный вариант - Golang + Fyne. Судя по тому, что ТС в качестве гуйни выбрал PySimpleGUI, софтина у него небольшая и несложная. Переписать на Go с Fyne можно легко и непринуждённо. Опять же, мой вариант прекрасно компилится в один бинарник.

FatPinguin
()

Интерпретатор пистона и так кросс. Делаешь пакет, который ставится через пип, он добавляет команду и ей запускается сервер, а потом открывается ссылка в браузере. Так работает pgadmin4. У нас так банковское по распространялось в виде self-hosted приложений. Можно еще дополнительно в докер все завернуть и тогда люди, незнакомые с питон смогут без секса с версиями интерпретатора и виртуальными окружениями запускать твое поделие. Но докер на винде вроде wsl требует, а в линуксах питон стал системным интерпретатором и с некродистрами проблема будет, где древний питон стоит, который не подлерживает аннотации и тп. А вся эта вебня давно обосновалась на компах. Я еще в начале нулевых ковыряя файлы игр оьнаружил что у многих лаунчеры - это тупо html/css/js

rtxtxtrx ★★
()
21 ноября 2024 г.
Ответ на: комментарий от lovesan

В этом и была ошибка. В слове Python, в частности.

Почему же? Если оп знает только питон, и инструмент решает его задачу.

Не надо, пожалуйста.

дык пущай делает, тебе с этого как?

ggrn ★★★★★
()

Сам по себе питон кроссплатформенный. Работает и на виндовсе, на линуксе и на маке.

Если тебе нужен бинарник, то они будут платформозависимыми.

Когда-то делал .exe файлы через py2exe. Получался exe файл + каталог, где всякие питонячьи библиотеки.

С линуксом все одновременно и проще и сложнее. Питон установлен по умолчанию, но питонячий код на старом питоне скорее всего не заработает на новом питоне.

dicos ★★
()