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)

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

Да все он нашел, я проверял. Пути есть, все есть. Все строки выполняет, результата нету. Я логи после каждой строки добавлял - все отрабатывает.

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

Чот я отладку типа сделал, а про элсы не додумался. Спасибо. Попробую.

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

Ну то что картинка лучше на одном и том же мониторе и файле, это вряд ли. Может герцы не те ?

Герцы почти те, только у Мака есть HDR, работающий механизм цветовой калибровки дисплея и используемые профиля монитора. Ну почему на мониторе и на экране ноутбука с линуксом один и тот же бекграунд рабочего стола выглядит по-разному? Ответ: ну тупо калибровка дисплея, цветовые профиля и вот это все. А на маке все более-менее такое же. Я давно хочу взять где-то калибратор монитора и откалибровать все мониторы. Но вот дорого это все, а друзей-полноцветчиков в издательствах у меня не осталось. Вроде X11 это умеет, но вот как мне не ведомо. Ну и есть у мака нейронные ядра, которые активно используются для «улучшайзинга» картинки.

Я ж говорил, настроить и поставить можно все. Знать бы, что ставить. И лезть туда просто не хочется. Насчет куцести MacOS — ну не в этом месте и теме это обсуждать. Я видел много юниксов, куцести этой версии я особо не заметил, а удобства много. Всусовщина это всё и паттерны использования.

gns ★★★★★
()

Pacman/Aur ненавижу pip и прочее, что пытается самостоятельно управлять пакетами в системе

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

Ой!... Проще на пару дней на прокат хороший калибратор взять, чем паять невесть что. И это невесть что тоже обо что-то калибровать придется. Нужно что-то, что и X11 и Mac поддерживают. Я интересовался этим вопросом. Хоть можно быть уверенным в том, что сенсор правильно цвет «видит».

gns ★★★★★
()

Для винды по любому нужно делать .exe. Нубы не будет трахаться установкой пицтона. А для линуксе python3 setup.py install легко сделать.

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

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

Я не задавался этим вопросом, да и зачем контейнеры на клиентской машине? В интернете сведения на сей счет противоречивые. Песочницы какие-то есть, виртуалки есть. Говорят, что и докер работает, а еще говорят, что контенеров нема. Кому верить не знаю.

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

Заинтересовали Вы меня. Кароч, контейнеров в смысле докера на shared kernel нет от слова «совсем», походу. Типа due to lack of commercial interest. Датацентры на макосях сотрудникам Яббла, видать, не снятся даже в страшных снах, поэтому, Яббл их и не делает. :)

А всяких VM-based контейнерных решений и средств упрощения жизни с контейнерами примерно дофига. Типа гипервизор встроенный, ну и поднимем легкую VM c линухом и засунем туда нашу аппликуху. Так как-то все это устроено.

Кто-то пытается придумать shared kernel-контейнеры, но это ж, типа, неймспейсы, изоляция процессов, cgroups и вот это вот все. Ну и хто все это делать будет? Ябблу пофигу, им не надо. У них песочницы (или что там у них?) в айфончиках есть, ну и ладно. Мне вот интересно, сколько пользователей мака знает о существовании homebrew? А Вы тут про контейнеры... :)

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

Смузеры бы с ума сошли от такой колаборации.

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

Странно, и почему Вы тогда не поняли что мак-ось ущербная ?

P.S. Хотя да, насколько я помню в мак-оси ядро взято из фряхи а там тоже с конейнеризации туго.

P.S.S. Вот МС те не сопртивлялись, поняли что их Windows в уже все, и пилят свой линукс (маринес).

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

Нет, не так. Нужна виртуалка, внутри которой докер, внутри докера ещё один докер, а внутри того докера уже флетпак.

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

Дело не во фряхе, там менеджмент памяти, процессов и много чего еще лежит ниже того, что взято из фряхи, есть там свои «недра Мории» в виде XNU.

Я не уверен, что будет правильным называть хорошую десктопную ОСь ущербной, потому что она не годна для серверных применений. Тогда и вполне себе серверный линух следует считать ущербным для десктопа, потому как HDR, цветовые профиля, работа с фото, музыкой, оборудованием, «умным домом» и коммерческими приложениями с закрытым протоколом. Все имеет свои ограничения. Как бы, на посмотреть кино отсутствие контейнеров не сказывается. Уж не говоря о контроле энергопотребления. Чо-та тот линух батарейки жрет как не в себя. А вроде занят тем же самым.

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

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

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

Ну, кстати, по виртуалке на ядро, а в каждой виртуалке сколько-то контейнеров — нормальная практика в датацентрах.

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

Я старый и до МАКосХ юзал 9ку ну так что еще на поверах была, вот с нее и осталось вся это фотошоп хдр и т.д. железка была сама в себе.

Но в то время они разглядели что скоро пролетят, и погнали, ядро с фряхи, окружение с гну, естественно под свое железо гнули а у них оно все конкретное и им проще …

Ладно фиг с ним с этим спором.

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

Ну, кстати, по виртуалке на ядро, а в каждой виртуалке сколько-то контейнеров — нормальная практика в датацентрах.

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

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

Чтобы кто-то из хостеров VDS/VPS давал докер как услугу - не видел такого.

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

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

Сам я только очень с краю это все задел, и может оно и к лучшему. Что-то мне в том мире как-то неуютно. Ну погоди, а всякие там SDN'ы, Tungsten Fabric и вот это вот все?

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

Я тоже не молодой, и мак еще на Мотороле помню. Вот на 6502 только видел у других на столах году в 1985м. Красив он был всегда, на старую макось народ плевался сильнее, чем на винду. Походу, у них там с многозадачностью было что-то на уровне windows-95 или даже воркгруп. Ну и с защищенностью процессов так же. Если книжки читать, то ядро там не совсем только одна Фря. У них даже сисколлов два набора — один от FreeBSD, а другой от Mach c отрицательными номерами. Типа снизу XNU, потом слой от Фри, а сверху коксос и интерфейс от NextStep. Тот еще трехслойный бигМак получается. Я и спорить не хочу, мне это уже давно надоело. Кстати, МакСервер у Яббла же был когда-то, видать почехлили когда поняли, что не тянут.

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

Сам я только очень с краю это все задел, и может оно и к лучшему. Что-то мне в том мире как-то неуютно.

Потому что часто выглядит как попытка впарить за $млн набор скриптов и обвязку докера. И что характерно - выглядит так не только в РФ.

Ну погоди, а всякие там SDN’ы, Tungsten Fabric и вот это вот все?

Это же IaaS все, про кластеры и скалинг, этажем выше от виртуализации железа.

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

Package Manager of the corresponding Distro.

Уже на протяжении десятков лет это стандартный способ устанавливать любой софт на любую систему.

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

Ага, конечно. Ну давай, установи, например, свежую версию 3.0 0 или хотя бы 2.6.0 cantera-python пакетным менеджером в Debian, Arch или Windows.

Это ж «любой софт», на «любую систему».

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

Хз как там в Дебиан и Арч но в рпм мире встроенный дистр, да и полно софта есть наподобие py2rpm (точно название не помню), они автоматом делают рпм из питона. Только какой в этом смысл ? Это будет ухаться в систему а не в env.

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

emerge sci-libs/cantera

Я не отвечаю за ВСЕ системы.

Я говорю как это ДОЛЖНО быть сделано АВТОРАМИ софта!

Если софт свободнораспространяемый, то это личная проблема авторов сделать его доступным!

Либо, если софт очень важный, это делают разработчики и сопроводители дистрибутивов.

Но использовать ЛЕВЫЙ способ установки для некого дистрибутива это идиотизм!

P.S. У меня Arch нет, но я с 99% вероятностью подозреваю, что там тоже самое как и в Gentoo.

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

ЭТО РОДНОЙ! ЕГО НЕ НАДО УСТАНАВЛИВАТЬ!

НУЖНО ЛИШЬ ОДНО - НАУЧИТСЯ ЧИТАТЬ.

В каждой системе СВОЙ ПАКЕТНЫЙ МЕНЕДЖЕР.

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

Меня интересует не проект, а знания в

«chemical kinetics, thermodynamics, and transport processes»

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

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

Потому что часто выглядит как попытка впарить за $млн набор скриптов и обвязку докера. И что характерно - выглядит так не только в РФ.

Ну так если это тебе позволяет «почти мгновенно» размножить твой исполняемый кусок кода сколь угодно широко и это решает насущные бизнес-задачи, то что же нет-то? Если проблема пользователя ценой в миллион решается условно за день работы программиста, то глупо было бы продавать решение по цене оплаты труда за день. Особенно, если клиент готов платить больше. Как бы, себестоимость бутылки вина во Франции составляет максимум 15-20 евро, даже в самом дорогом шато. Ну а сколько стоит Romanee Conti или Chateau Lafite ну вот можешь сам поискать. :)

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

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

Проблема только в том что таких проблем не бывает. Нет сейчас некоего «тайного знания», которое бы позволило бы решить некую волшебную проблему, ценой в миллион.

На практике это происходит абсолютно не так: клиент условно забивает гвозди микроскопом либо использует лопату там где нужен экскаватор.

Приходит консультант и сначала объясняет кастомеру что такая проблема вообще у него есть (осознают очень сильно далеко не все), затем они вместе считают возможный профит с учетом затрат на решение и внедрение.

Собственно ценник в миллион возможен исключительно в том случае если решаемая проблема даст экономию в миллиард. Так это работает.

Ну а сколько стоит Romanee Conti или Chateau Lafite ну вот можешь сам поискать. :)

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

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

Я тут сделал элсы, так вот…

import urllib.request
import shutil
import os
import zipfile
import re
import subprocess
import json
import ast
import time
import datetime

for root, dirs, files in os.walk(os.getenv('APPDATA')): #читаем рекурсивно каталог %AppData%
	testPer = 1
	for dir in dirs: #ищем каталоги
		testPer = 2
		if 'Sirus' in dir: #если в каталоге есть слово Сирус
			testPer = 3
			path = os.path.join(root, dir) #путь = путь к этому каталогу
			testPer = 4
			for root, dirs, files in os.walk(path): #читаем рекурсивно все каталоги в этом пути
				testPer = 5
				for file in files: #читаем рекурсивно все файлы в этом пути
					testPer = 6
					if file.endswith('.log'): #если расширение файла .log то:
						testPer = 7
						regex = re.compile(r'"client":{"folder":"([^"]+)"') #ищем начало пути к вовке (регексп)
						testPer = 8
						data = open(os.path.join(root, file), 'rb').read().decode('windows-1251').replace('\x00', '') #переводим кодировку текста файла в ascii null byte
						testPer = 9
						rez = regex.findall(data) #ищем регексп выше
						if rez: #если нашли, то
							testPer = 10
							for root, dirs, files in os.walk(rez[0]):
								testPer = 11
								for dir in dirs:
									testPer = 12
									if 'AddOns' in dir:
										testPer = 13
										path1 = os.path.join(root,dir)
										urllib.request.urlretrieve("https://github.com/Vladgobelen/NSQC/archive/refs/heads/main.zip", "main.zip") #качаем архив с аддоном
										testPer = 14
										archive = 'main.zip' #название скачанного архива
										testPer = 15
										with zipfile.ZipFile(archive, 'r') as zip_file: #проверка на открытие файла
											testPer = 16
											zip_file.extractall(path1) #распаковать архив в аддоны сируса
											testPer = 17

										for root, dirs, files in os.walk(path1):
											testPer = 18
											for dir in dirs:
												testPer = 19
												if 'NSQC-main' in dir:
													20
													path2 = os.path.join(root,dir)
													shutil.copytree(path2, path1 + '\\NSQC',dirs_exist_ok=True)
													if os.path.isdir(path2): #если аддон существует, то
														testPer = 21
														shutil.rmtree(path2) #удаляем аддон
														testPer = 22
												else:
													testPer = 555
									else:
										testPer = 444
					else:
						testPer = 333
		else:
			testPer = 222
if os.path.isfile('main.zip'): #если скачанный архив существует возле апдейтера, то
	os.remove('main.zip') #далить архив
#if testPer != 22:
#	input('Аддон успешно обновлен') #вывести в консоли надпись "Аддон успешно обновлен" с запросом на нажатие любой кнопки клавиатуры
#else:
input(testPer)



У некоторых пользователей все заканчивается на testPer = 1

И все. При этом если отдельной строкой у них глянуть os.walk(os.getenv(‘APPDATA’)), выводит путь к каталогу с конфигами. Все папки есть. А такая вот фигня. Ну и что это может быть?

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

Клятвенно заверял сначала, что антивируса у него нет. Потом что добавил в исключения антивируса. Наконец, что полностью выключил антивирус. То есть это скорее всего он? Ну, тогда ссзб. Пусть настраивают как хотят.

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

os.walk(os.getenv(‘APPDATA’))

Что-то смутно такое припоминаю. Клиенты же на винде, верно?

Попробуй может так преобразовать явно аппдату в путь:

os.walk(os.path.abspath(os.getenv('APPDATA')))
frunobulax ★★
()
Ответ на: комментарий от frunobulax

Кхм.. Чот я не то написал. Сейчас у себя проверил - он отрабатывает как надо, но пишет в конце 1. Хотя не должен же. Ведь не должен?

input(testPer) вон же я присваиваю переменной значения везде. Должно в конце выводиться в теории последнее присвоенное. А выводит 1.

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

Я тоже невнимателно прочитал, os.walk у тебя корректно отрабатывает.

Если правильно читаю и представляю себе как работает, то да, у тебя testPer будет единица. Потому что os.walk будет присваивать ей единицу на каждом «заходе» в католог и файл. Т.е. даже если нужная директория нашлась и скрипт сделал то что там внутри полагается (и присвоил соответствующее значение), walk пойдет дальше в следующую директорию в аппдате и снова приствоит переменной единицу.

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

Но ведь у меня в самом конце присваивание, блин. Схренали бы оно после выполнения последней строки должно возвращаться в начало? Я не понимать.. Блин.

shutil.rmtree(path2) #удаляем аддон testPer = 22

Вот последнее действие. РАзве нет?

Ля.. У меня опечатка:

if 'NSQC-main' in dir:
    20

Ааа.. Наверное там есть другие каталоги, не подходящие под условия и они сбрасывают на единицу. Уф.. Бесит. Ладна. Пусть пока сами думают.

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

Ааа.. Наверное там есть другие каталоги, не подходящие под условия и они сбрасывают на единицу.

Да, оно)

Присобачь logging, да и пиши человечьими словами где что выполняется на каком этапе. Кажется излишним, но потом возвращаться к дописанию\дебагу проще, особенно если скриптуха разрастается. f-строки еще покури, там просто, с их помощью выходят понятные лог-сообщения и в коде и в выводе)

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