#37 Как сделать python-скрипт исполняемым в различных операционных системах?
(вторая часть)
У нас может быть мультиплатформенный или моноплатформенный скрипт/программа/утилита/что-угодно, и мы хотим его распространять среди пользователей, не знающих, что такое Python, не имеющих на своей машине нужных пакетов и модулей.
Вариант номер 1: А давайте напишем dockerfile, соберем docker-контейнер, и тогда скрипт можно будет запускать под разными операционнами системами, включая Windows. Рабочий вариант, при условии, что наша программа - это некий web-based сервис и весь его интерфейс реализован в виде web-странички, либо не имеет даже его, а выполняет какую-нибудь сетевую функцию или является хранилищем. Всё, что ему необходимо иметь, он носит с собой и значительно изолирован от операцонной системы пользователя, что может быть для разных задач как плюсом, так и минусом.
Вариант номер 2: А давайте соберем исполняемый файл для целевой операционной системы. Используем PyInstaller, утилиту для этих целей. Она создаст исполняемый файл или папку с файлами, содержащими нужные модули. В случае упаковки в один файл - да-да, я говорю "упаковки" - по сути будет создан самораспаковывающийся архив, создающий при запуске нужное окружение и исполняющий байт-код нашей программы. Это будет полноценная программа, с доступом к файловой системе, портам, графическому интерфейсу. Можно открывать диалоговые окна и грабить коро.... Эм, нет, только окна.
Минусы - иногда PyInstaller может упаковать слишком много ненужного, иногда не включить нужный модуль, и самое главное - в любом случае это будет байткод.
Вариант номер 2+: А давайте используем Nuitka. Транспилируем Python-код в C, и потом соберем его при помощи cmake как программу, написанную на C.
Это будет уже не байткод, и производительность в некоторых случаях будет чуть выше, но кардинальным образом не изменится. Метод симпатичный, вот только не всегда получается собрать исполняемый файл так, чтобы он потом без проблем запустился. К сожалению, единого стандартного "компилятора" для Python нет.
По умолчанию я стараюсь использовать PyInstaller из-за лучшей поддержки и минимума головной боли. Если, конечно, задача собрать программу в исполняемый файл у меня имеется.
Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.
#сериал101, #37
Батя
Повезло и не повезло сразу
Источник телеграм канал "Плохой Шофёр" - https://t.me/BadShofer/40087
Вопрос к знатокам компьютерных кресел, особенно колесиков
Давно уже заскрипел мой доисторический трон на колесиках
и я все никак не мог собраться это дело устранить. И вот, наконец, нахлынуло вдохновение и, подкрепивши его роликом с ютюба, я взялся за дело. Довольно скоренько, все разобрал, где подмазал графитовой смазкой, где пшикнул Вдшкой. Собрав обратно, не без удовольствия, отметил полное отсутствие неприятных скрипов, НО … Как это обычно бывает: есть нюанс. Жуткий грохот дурацких пластиковых колесиков никуда не делся. Раньше на фоне омерзительного скрипа он как-то воспринимался помягче, но теперь вылез на первый план.
Ну и какие проблемы?? – спросите вы, интернет забит колесиками прорезиненными или вовсе силиконовыми, наливай да пей :) .
Вот и дошел до сути проблемы. Оказалось, что в моем стуле колесики какие-то нестандартные и вместо того, чтобы спокойно выниматься из крестовины вместе со штоком, они снимаются со штока, наглухо вмонтированного в крестовину.
Ну и самое главно: именно таких прорезиненных колесиков в продаже мне найти не удалось, совсем.
Может у кого-то будут какие-нибудь полезные мысли на этот счет? Где найти такие прорезиненные колесики? Или как, относительно безгеморойно, приколхозить какие-нибудь другие?