LINUX.ORG.RU

Лучший способ распространения СПО на Python для разных ОС?

 ,


0

4

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

  1. в виде пакетов (msi, установщик в exe - Windows, deb и др. - Linux) 111 (33%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. в виде исходников, git clone 104 (31%)

    ***********************************************************************************************************************************************************************************************************************************************************************************************************

  3. pip, .whl с публичного или частного сервера 100 (30%)

    ************************************************************************************************************************************************************************************************************************************************************************************************

  4. не стоит писать СПО на Python для других людей 86 (26%)

    *******************************************************************************************************************************************************************************************************************************************************

  5. в виде исходников, архив 50 (15%)

    ************************************************************************************************************************************************

  6. образ Docker и др. 38 (11%)

    *************************************************************************************************************

  7. сборка в pyinstaller и др., один бинарник (.exe, .AppImage и др.) 20 (6%)

    *********************************************************

  8. компиляция в C (Nuitka и др.), один бинарник (.exe, .AppImage и др.) 20 (6%)

    *********************************************************

  9. система управления пакетами (Conda и др.) 17 (5%)

    *************************************************

  10. свой вариант (в комментариях) 16 (5%)

    **********************************************

  11. архив с минимальной сборкой Python и включенными зависимостями 14 (4%)

    ****************************************

  12. компиляция в C (Nuitka и др.), архив 6 (2%)

    *****************

  13. сборка в pyinstaller, cx-freeze и др., архив 5 (2%)

    **************

Всего голосов: 587, всего проголосовавших: 333



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

Ответ на: комментарий от mx__

Первое это виндово-дефолтный установщик (который сам написан без питона, просто файлы .py разложит в нужные места), а остальные два это питоновское что-то.

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

ни перл сами собой не возникают.

Перл давно выкинули из Федора/Шапки, если сам не притащишь в мин. наборе его нет.

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

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

Хм не знал про такие в виде msi …

остальные два это питоновское что-то.

Т.е. эти два все таки одно и тоже.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Перл давно выкинули из Федора/Шапки, если сам не притащишь в мин. наборе его нет.

Да как так-то:

In RHEL 8 / CentOS 8, Perl package is already included. You can check by using the below command to check if it installed or not.

# yum info perl 
# rpm -qa | grep perl

Что это за корпоративный линукс без перла? Так не бывает!

alex0x08 ★★★
()
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от firkax

наверно надо снести её

# dpkg -l | grep smb
ii  libsmbclient:i386                             2:4.13.13+dfsg-1~deb11u5           i386         shared library for communication with SMB/CIFS servers
ii  smbclient                                     2:4.13.13+dfsg-1~deb11u5           i386         command-line SMB/CIFS clients for Unix
# dpkg -l | grep -F 4.13.13
ii  libsmbclient:i386                             2:4.13.13+dfsg-1~deb11u5           i386         shared library for communication with SMB/CIFS servers
ii  libwbclient0:i386                             2:4.13.13+dfsg-1~deb11u5           i386         Samba winbind client library
ii  python3-samba                                 2:4.13.13+dfsg-1~deb11u5           i386         Python 3 bindings for Samba
ii  samba-common                                  2:4.13.13+dfsg-1~deb11u5           all          common files used by both the Samba server and client
ii  samba-common-bin                              2:4.13.13+dfsg-1~deb11u5           i386         Samba common files used by both the server and the client
ii  samba-libs:i386                               2:4.13.13+dfsg-1~deb11u5           i386         Samba core libraries
ii  smbclient                                     2:4.13.13+dfsg-1~deb11u5           i386         command-line SMB/CIFS clients for Unix
ii  winbind                                       2:4.13.13+dfsg-1~deb11u5           i386         service to resolve user and group information from Windows NT servers

Выяснилось что libsmbclient - зависимость для mplayer и mpv, удалять его и ещё два пакета нельзя. А вот эти можно:

apt-get purge python3-samba samba-common samba-common-bin smbclient winbind cifs-utils
Причём winbind ещё и демоном в процессах висел.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от alex0x08

Ну не всем же в гугле работать. Там таких пакадж-менеджер-писателей примерно каждый третий. Хоть brew и действительно хорошая штука, пользуюсь и радуюсь. У них там «отраслевой шовинизм: если ты не яблочник, то с тобой что-то не так. Довелось как-то по работе смотреть с ютуба доклад с какой-то приличной конференции про git. Сотрудник Микрософта докладывал основы git. Думал, что полезное расскажет, но он излагал первых две главы известной книжки Pro Git, и делал это с макбука. Еще раз: сотрудник Микрософта. С макбука. С макосью. :) Я смеялся долго.

А ленивы не только пользователи. Мне по работе хватает решения всяких конфигурационных и программистских проблем, что бы еще про бытовое использование компа думать. Поэтому, „чисто кино с женой посмотреть“ или если жене надо какое-нибудь видео из ее обучающих мне неведомо чему курсов — так на тебе мак, у меня хоть про кодеки голова болеть не будет.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от alex0x08

И что ? Вообще это делаеться так :

yum remove perl

И смотришь что оно тянет.

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

Интересно что это за дистр линуха такой что проблемы с фильмами есть.

И вообще как то странно, фильмы то откуда ?

mx__ ★★★★★
()

Системные пакеты либо исходники

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

От дистра не зависит примерно ничего, все можно настроить. Ну где-то приходилось non-free-кодеки доставлять. Ролики откуда угодно, ютуб работает везде, понятное дело, а вот для скаченного с торрентов, я помню, приходилось плеер подбирать. Кто-то «изкаропки» воспроизводил только звуковую дорожку и черный экран. Я не большой спец по всем этим кодекам, контейнерам, потокам... Когда-то я пытался в этом разобраться по работе, да работа та быстро кончилась. С тех пор живу по принципу «Mpv показывает все». Это, кстати, демонстрация принципа «пользователи ленивы».

С мака тупо картинка лучше, даже на одном и том же мониторе и с одним и тем же воспроизводимым файле. Ну да, десятилетней давности lenovo со встроенной графикой и mac m1. Ну и чего вы ожидали? Ну, а если, типа, хочется красивое видео в 4К с HDR посмотреть, так альтернативы нет (у меня, во всяком случае), ноут с линухом столько не тянет.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от firkax

на десктопе можно и простить

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

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

Ну то что картинка лучше на одном и том же мониторе и файле, это вряд ли. Может герцы не те ? Не забывайте что в маке все теже кодеки и взяты они из СПО. (Ну окромя проперов ку тайм, я забыл уже его название). Да, в отличие от платного мака линух фрии и по лицензии не может это тащить внутри увы. Но все это есть в стронних репах и подключается одной командой. После чего при запуске фильма сам качает нужные ему кодеки.

P.S. Сам я юзал и айфоны и макбуки, прикольное железо, но ось вся какая обрубленная и куцая. До сих пор понять могу это такой статус что ли, или неграмотность.

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

Странно как то не думал про это. Я иногда делал проги для виндузятников, обьянить им про питон и сторонии либы сложно. Делал ехе и несколько длл внутри. И все это в архив, py2exe вроде …

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

А вообще я проголосовал за whl, не хочу думать как все это делается в venv, и предпочитаю юзать сторонии питон проги (что не в дистре), только там.

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

Ноут с линуксом у него древний. А мак новый.

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

клоунада

Не клоунада. Сложность распространения и куча зависимостей вполне могут стать доводом против того или иного ЯП.

Я, например, находил скрипт для преобразования PDF-отчётов Сбербанк-онлайна во что-то структурированное, написанный на питоне. Под винду автор сделал инсталлятор, под линукс, кажется, написал дистроспецифичную инструкцию, которая у меня не пошла. Видимо, решил, что «линуксоиды сами разберутся». Да, вполне возможно, что он просто поленился, и можно было сделать по-человечески.

Когда пишешь для себя, таких сложностей, конечно, нет.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от Werenter

Поэтому только в исходных кодах, формат не важен.

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

Тут, конечно, лучи поноса Сбербанку, у которого был CSV, а потом его выпилили, но на него повлиять трудновато.

Сон — это пустяки. Главное — это устранить причину сна. Основной причиной является самое существование советской власти. Но в данный момент я устранять ее не могу.

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

Использую арч. Прога просто запустилась без пердолинга. Специально проверил.

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

Можешь скинуть текст ошибки? Может попробую понять, в чём дело.

Werenter ★★★
()

Голосовал за три варианта. Опишу текущий процесс поэтапно:

pip, .whl с публичного или частного сервера

Удобно прототипировать, на лету перебирать варианты при разработке.

в виде исходников, git clone

Когда с нужными модулями и их версиями определились, пишем рецепты для автоматических систем сборок (например, Yocto для эмбедовки) будущего продукта…

в виде пакетов (msi, установщик в exe - Windows, deb и др. - Linux)

…которая производит этот вариант, сводя весь перечисленный в опросе зоопарк к общему знаменателю и превращая нужные модули в органически встроенные во внутреннюю экосистему пакеты. Оные затем публикуются во внутренних репах и «запекаются» в образы с готовым окружением для тестирования (а затем – и релиза).

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

уже давно удалила. ни на одной моей машине (ни на ноуте, ни на серверах) этого УГ нет. я тебе больше скажу: я его и из сборки удалила. просто прекрасно!

мы много лет жили без этой заразы и всё работало замечательно. оно и сейчас точно так же работает.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от hobbit

$ mkdir Sberbank2Excel  # создаем каталог где все это будет лежать

$ cd Sberbank2Excel  # переходим в созданный каталог

$ git clone https://github.com/Ev2geny/Sberbank2Excel source  # клонируем репу

$ python -m venv --copies env  # создаем виртуальное окружение, копируем файлы питона чтоб не огрести проблем когда системный обновится

$ source env/bin/activate  # активируем виртуальное окружение

$ pip install -r source/requirements.txt  # устанавливаем зависимости, которые указал разработчик приложения

$ python source/core/sberbankPDF2Excel.py  # запускаем, пользуемся, радуемся

usage: sberbankPDF2Excel.py [-h] [-o OUTPUT_EXCEL_FILE_NAME] [-b]
                            [-f {SBER_DEBIT_2107,SBER_DEBIT_2005,SBER_CREDIT_2107,SBER_PAYMENT_2212,SBER_PAYMENT_2208,SBER_DEBIT_2212,SBER_SAVING_2303,SBER_DEBIT_2303_CHELYABINSK}]
                            [-t {xlsx,csv}] [-r] [-i]
                            input_file_name
sberbankPDF2Excel.py: error: the following arguments are required: input_file_name

Это реально вот на столько сложно или просто из-за того что я питоняша у меня не возникает проблем? Мне гораздо сложнее какой-нибудь сишный софт поставить, а самое веселое начинается еще когда он стопицот каких-то инклюдов имеет и надо угадать какие пакеты в твоей системе содержат эти либы.

micronekodesu ★★★
()

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

И да, в виде пакета (*.deb) стараюсь никогда не ставить чтоб не захламлять основную систему. Можно, наверно, как-то там поприседать вокруг чтоб обойти проблему, но зачем если есть pip\исходники.

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

Инклюды в сишном софте — проблема мейнтейнера. А в комментарии, на который я отвечал, предлагалось распространение питонософта в исходниках, т.е. эти проблемы перекладываются на голову конечного пользователя. Я собственно спорил не столько по поводу питона как такового, сколько по поводу конкретного способа распространения.

Но за инструкцию спасибо, попробую!

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

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

nionio35
()
Ответ на: комментарий от grem

Вынужден признать, что Pypi (pip) на текущий момент является самым универсальным кроссплатформенный способом распространения.

это не так.

lefsha
()
Последнее исправление: lefsha (всего исправлений: 1)
Ответ на: комментарий от hobbit

Сложность распространения

Один раз осваиваешь процедуру - потом по накатанной.

куча зависимостей

Эм... Может, я неправильно понял, но... просто используйте меньше зависимостей. Если вам нужна одна-единственная функция из условного numpy, зачем тащить весь numpy, лучше найти альтернативную функцию или написать свою. Это не проблема языка. Прога на любом языке разжиреет, если тащить все подряд.

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

Самым универсальным, но не всегда самым удобным и безопасным: вот недавно вместо fonttools начал ставить fontools.

Есть более универсальные кроссплатформенный способы установки приложения с его зависимостями?

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

В виде пакета в репозитории дистрибутива.

Который устарел еще на момент релиза.

Только докер, только актуальное ПО без боли и компиляции.

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

А теперь представь что таких каталогов у тебя 25: Как ты их будешь все обновлять? Как будешь разруливать системные зависимости (не все лежит в pypi)?

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

Только докер, только актуальное ПО без боли и компиляции.

Я тут уже пробовал объяснять про glibc и системные вызовы, но видимо не дошло.

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

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

Пусть лучше скажет название своего дистра.

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

Venv, на самом деле, просто осваивается. Я сам сначала не хотел иметь с ним дела, но debian обновился до bookworm, который фактически вынуждает пользоваться venv, и пришлось выучить :-)

baobab
() автор топика

Опрос корявенький. Смешаны в кучу приложения, библиотеки, люди, кони. Конечно же под винду готовое приложение лучше распространять как .msi. А библиотеку, если она ещё и на чистом питоне, распространять через pypi, с публикацией исходников на гитхабе. Разнообразные компиляции в бинарник это попытка изнасиловать бульдога носорогом, я конечно понимаю, бывает нужно, но это опять же, частный случай приложения под винду, в основном проприетарного.

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

neumond
()

Товарищи программисты, объясните мне как распространители распространителю. Вот сделал я скрипт на питоне. Собрал его в одни бинарник виндовый. У половины пользователей он тупо не рабоатет по различным причинам. Каждый первый фаервол и антивирус его блокирует для начала.

Посмотрите на это с точки зрения пользователя - им ваши гиты и исходники нафиг не всрались. Им нужно тыкнуть и чтобы работало - а оно не работает. А как бы сделали вы?

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

Лучше иметь хоть какую то версию, чем никакую (если ПО распространяется в докере то ставить ее я не буду)

MOPKOBKA ★★★★
()

Свой вариант: лучший способ зависит от того, что питонная софтина собой представляет.

Утилита командной строки с минимумом зависимостей - архив исходников + pip + дистрибутивщики соберут свои пакеты. Важно: в Arch с недавних пор мейнтейнерам крайне не рекомендуется использовать PyPI в качестве канонического места для скачивания исходников, поскольку PyPI портит цепочку доверия к целостности исходников за счет отсутствия рабочего механизма проверки подписей разработчиков и факта, что подписи действительно принадлежат им.

Что-то серверное - Docker.

GUI-приложение - Flatpak + msi + яблочный dmg или pkg. Дистрибутивщики по своему желанию могут опакетить, но для этого им нужен архив исходников или git-репозиторий.

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

перл, баш. но у меня скриптоты почти и нет. как-то особо не нужна.

Iron_Bug ★★★★★
()

не стоит писать СПО на Python для других людей60 (27%)

есть ещё люди разумные на лоре

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

Скрипт в виде .py файла + .bat чтобы щелчком запускалось + где скачать питон. По идее в .bat можно прописать автоустановку питона. Для особенно хитрожопых: скрипт на питоне можно разместить внутри .bat.

Если там развесистая приложка из множества .py файлов, то лучше msi пакет.

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

А чем это лучше скомпилированного бинарника то?

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

https://hub.mos.ru/vladgobelen/NSQCu/-/blob/main/NSQCupdater.py

Самое простое было решить запуск на виндоус7, где нет питона 3.9 и выше - сборкой на питоне 3.8. Однако у каждого второго этот скрипт отрабатывает до последней строки….и ничего не делает. Вот такая вот фигня.

Заметь, выполняет каждую строку. А в итоге ноль.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Винда такая винда. А ведь ещё находятся кукаретики, про то, что под под linux сложно собирать переносимые бинарники. В винде всё в несколько раз хуже…

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

Так он видимо не нашёл куда ставить аддон. В скрипте нет сообщения что не нашёл. Надо хорошо дебажить скрипты перед распространением.

neumond
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.