Веб-версияОткрыть в Telegram

ПостУ меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nu…

20 июля 2026
P
Python Заметки
Ссылка
нажмите — покажем
У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nuitka. И вот этапы борьбы поиска удобного решения. ▫️ Dual Boot Пока был дуалбут, я перезагружался в Windows, копировал исходники и запускал сборку. Рабочий вариант, но времени занимает слишком уж много. К тому же дуалбута давно нет. ▫️ VirtualBox Если нет дуалбута, то выручает VirtualBox. Тут стало проще, я расшарил папку с проектом в Windows как сетевой диск. Просто запускаю готовый скрипт сборки и готово. Файл сохраняется сразу на место. Но горький опыт заставил делать шару ReadOnly, что требует сначала копировать проект на локальный диск в виртуалку и только потом запускать сборку. После чего перебрасывать результат. В общем, тоже так себе вариант 😖 Ясное дело, что эти два способа достаточно наивны и никакой автоматики. Поэтому пошли далее... ▫️ Wine Выглядит всё просто. Выполняем обычные виндовые команды в терминале, просто в начале нужно дописывать wine. Попробуйте выполнить команду wine cmd и вы окажетесь в "обычной" виндовой консоли. Ну а там просто выполняем команды сборки. Главное - установить все необходимые зависимости. В целом запускается, но дебажить не удобно. Проверить запуск на "чистой винде" тоже не получится, только через тот же Wine. Поэтому в итоге я остановился на следующем варианте. ▫️ VirtualBox CLI Это тоже самое что пункт 2 но полностью на автомате. Используя команду VBoxManage можно манипулировать виртуалкой. - VBoxManage startvm - запускает виртуалку по имени, в том числе headless - VBoxManage guestcontrol "VM_NAME" "CMD" позволяет запускать шел-команды - copyto и copyfrom - позволяет копировать туда-сюда файлы В результате, мы можем кодом запустить виртуалку, выполнить необходимые действия, забрать результат и погасить виртуалку! В скрипте я запускаю VM, копирую в неë батник сборки и исходники и запускаю. После сборки файл копируется обратно на хост в dest. А если надо, запускаем виртуалку в обычном режиме и визуально дебажим скрипты сборки и само приложение. Из минусов только 20 занятых гигов на винду. Итого, получился такой демо-проект↗️ со сборкой простого диалога на PySide6. В проекте примеры с wine и VirtualBox CLI Не обещаю, что у вас запустится сразу, но у скрипты точно рабочие! Какие еще есть варианты ▫️В Docker контейнере. Например есть такой cdrx/pyinstaller-windows ▫️Говорят PyOxidizer в будущем сможет делать это без танцев с бубном, но пока не реализовано. Только вот проект 2 года не обновляется, может и не реализуют уже 😢 #pyside #linux
6 · 693 ·

Рядом в ленте

PPython ЗаметкиМодуль pwd может использоваться для считывания информации о пользователях из базы данных паролей Unix (обычно /etc/passwd ). Получить объект текущего юзера можнPPython ЗаметкиВ прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно поднять привилегии нельзя. Чтобы не потерять уровень доступа текущего про
это сообщение
PPython ЗаметкиНе так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без подробностей и текста ошибки. Неудобно когда нет явного описания что прPPython Заметки­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в браузер. Это специально собранный бинарник .wasm (не dll и не so) котор

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем