Следя за проблемами https://github.com/cool-RR/PythonTurtle/pull/105#issuecomment -421965482, # 106 и # 90, я хотел бы начать сбор информации о том, как (лучше всего) делать упаковку для всех. платформы, на которых работает PythonTurtle. Когда мы узнаем, как производить упаковку вручную, автоматизировать все это станет простой задачей.
Другими словами, нам нужно
ПРИМЕЧАНИЕ. Если писать об этом в этом выпуске неудобно, мы можем использовать проект Wiki, чтобы помочь нам двигаться дальше.
В настоящее время мы используем py2exe и py2app для Windows и macOS.
Согласно недавнему докладу на PyCon Otto, мы должны переключиться на PyInstaller , который позволяет создавать автономные исполняемые файлы для Windows, macOS и GNU / Linux.
Я согласен, что мы обязательно должны использовать PyInstaller вместо py2exe и py2app.
И я согласен с тем, что нам нужен надежный и автоматический процесс сборки.
Мы также не должны забывать о создании пакета передавать его в PyPI при выпуске.
Я также предлагаю запускать выпуски, вставляя тег Git (с номером версии) в репозиторий GitHub. После этого установщики можно будет загрузить со страницы выпуска . Я надеюсь, что все это возможно без проблем.
Я согласен, хотя такая автоматизация - своего рода высокая цель, если мы даже дойдем до того момента, когда мы сможем выпустить релиз, я буду в восторге.
если мы даже дойдем до того момента, когда сможем выпустить релиз, я буду в восторге.
Тогда приготовь свой скафандр! :улыбка:
Как и предполагалось, PyInstaller потребует запуска в инфраструктуре, для которой он должен создать установщик (например, в Windows для установщика Windows, на Mac для установщика macOS).
У меня нет ни винды, ни мака. Следовательно, мне нужно сделать громоздкое выяснение того, как выполняется сборка на AppVeyor. Кроме того, нам нужна macOS с установленным Python 3 (и скрестите пальцы, что документация устарела, и мы также можем построить с Python 3).
Мне, вероятно, лучше всего начать с автоматизации создания пакета Python (и автоматически загружать его в PyPI). IIUC, в любом случае требуется setup.py
для сборки с (некоторыми функциями) PyInstaller.
У нас уже будет один из возможных способов установки PythonTurtle таким образом.
Вы хотите добавить меня в качестве сопровождающего к проекту PyPI ? Мне было бы легче автоматизировать вещи, если бы я мог использовать свои собственные учетные данные. Мое имя пользователя - bittner, что неудивительно.
Я добавил вас в качестве сопровождающего по PyPI.
Что касается PyInstaller, мне интересно, будет ли виртуальная машина с ReactOS работать для создания установщика Windows.
Заставить pip install PythonTurtle
установить программу и все необходимые зависимости довольно сложно:
Выводы:
install_requires=['wxPython']
к setup()
, но это не удастся, если предварительные условия ( упомянутые в README ) уже не были установлены. Возможно, мы сможем обнаружить - очень техническую ошибку - и напечатать полезную подсказку в случае сбоя установки.wx
не может быть импортирован ( ModuleNotFoundError
в модуле приложения ).Выполнение либо удобным для пользователя способом «автоматического определения предварительных условий» с использованием platform.release()
и / или os.name
было бы возможно, но также довольно громоздко. Я предлагаю просто распечатать текстовое сообщение и обратиться к разделу установки README с URL-адресом.
Интересно, подойдет ли виртуальная машина с ReactOS для создания установщика Windows.
Я не уверен, как мы будем использовать виртуальную машину в облачной службе, которая будет автоматически создавать пакет PythonTurtle. Вы можете уточнить? (Вы собираетесь использовать только локально на машине разработчика?)
Вы правы, я этого не продумала.
Думаю, есть 2 вопроса:
Может ли ReactOS работать для создания установщика Windows с помощью PyInstaller?
Можно ли настроить его на автоматическую работу в облаке?
Предположим, что ответ на первый вопрос - да, и нет поставщика SaaS, который предоставляет эту услугу. Затем скажите, что мы можем настроить образ Docker, который запускает VirtualBox с гостевой системой ReactOS. Может быть, мы сможем найти поставщика SaaS, который будет запускать этот образ Docker для нас?
https://github.com/pypa/python-packaging-user-guide/issues/267 содержит довольно много интересных ссылок на упаковку приложений Python.
Как только загрузка пакета Linux на GitHub будет решена (через PR # 123), мы перейдем на поезд CI для macOS , да! : yum:
Следующей замечательной вещью после получения EXE для Windows и пакетов для работы macOS может быть создание AppImage для Linux. Это что-то похожее на файл .dmg на Mac. Это было бы единое решение для всех дистрибутивов GNU / Linux! : тада:: смайлик:
AppImage также (отчасти) имеет AppStore, получивший название AppImageHub . И сравнение дает понять, что это действительно круто. : +1:
Звучит неплохо!
На данный момент сборка пакета приложений в macOS (с использованием PyInstaller) работает не полностью. В качестве альтернативы, подумал я, мы можем создать формулу домашнего пивоварения. В настоящее время я просматриваю соответствующую документацию:
Хммм, похоже, ему нужен кто-то с Mac, чтобы эффективно разработать формулу. Хотя на самом деле это не кажется сложным. : мышление:
Вот формулы, относящиеся к Python (3):
Может быть достаточно зависеть от Python@3
(= 3.7) и установить wxPython через pip ( как в наших тестах ).
Для справки: если автоматические выпуски не работают (вероятно, в настоящее время они не работают, поскольку api_key:
установлен только на примерное значение ), вот как проект VSCodium выполняет автоматические выпуски на GitHub. : +1:
Рам, вы упомянули «установщик Windows» как главный приоритет в настоящее время. Я согласен.
Отметим текущее состояние союза.
Думаю, я все подготовил. Теперь, когда у меня нет компьютера с Windows, и я не планирую его покупать (кстати, то же самое для macOS), единственное, чего не хватает, - это того, кто возьмет на себя управление и вставит недостающий кусочек пазла на место. По моему внутреннему ощущению, мы действительно очень близки к тому, чтобы «задача выполнена».
Похоже, что все, что вам нужно сделать, это создать необходимую конфигурацию с расширением Microsoft Visual Studio Installer Projects , согласно ответу на StackOverflow .
Следовательно, можете ли вы взять на себя ответственность? Что необходимо сделать, IIUC:
.vdproj
Затем AppVeyor обнаружит этот файл, создаст установщик и предоставит его для загрузки на странице артефактов сборки.
По моему внутреннему ощущению, мы действительно очень близки к тому, чтобы «задача выполнена».
Не думаю, что если я начну над этим работать, это будет близко к завершению. Я даже не знаю, как использовать Visual Studio Project или каков наш текущий план. Если бы я взялся за эту задачу, я бы предположил, что это заняло бы несколько дней полной занятости.
Вы приложили много усилий для этого, поэтому я не чувствую себя хорошо, рассказывая вам об этом, но я определенно не буду добровольно работать над этой проблемой. PythonTurtle сейчас далеко не так важен в моей жизни, чтобы я потратил больше часа на его улучшение.
Я раздражаюсь, указывая на эту проблему из других выпусков, говоря, что без этой проблемы ничего не стоит? Я не буду мешать вам работать над любыми другими проблемами, я просто, вероятно, не присоединюсь, потому что эти усилия кажутся мне напрасными, но я не буду блокировать вас, и если я вам понадоблюсь для проверки кода или мелких вещей, Я буду счастлив сделать это.
Еще одна мысль по этому поводу. Вы говорите: «У меня нет компьютера с Windows и я не планирую его покупать». Если ваше возражение против выполнения перечисленных вами пунктов связано с тем, что вы сделали достаточно для этого билета или предпочитаете не тратить свое время на вещи, связанные с Windows, тогда да, это справедливое возражение.
Если проблема в том, что вы не хотите тратить деньги на лицензию Windows, возможно, это решаемо. Одна из идей - использовать ReactOS и посмотреть, работает ли он в Visual Studio Project. Если ReactOS не подходит, то, может быть, я смогу предоставить вам лицензию / машину для Windows. Сообщите мне, если это поможет.
Сообщите мне, если это поможет.
Вы знаете человека, который увлечен программированием в Windows? Windows - это запутанная среда для Python. Я не хочу вносить свой вклад в ложное представление о том, что «Python + Windows» хорошо сочетаются друг с другом, вот и все.
См. Https://github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment -683420022 для получения альтернативных решений для создания установщика MSI (WiX, WiX.Py ). Мы можем добиться успеха в сочетании с GitHub Actions. Кто-нибудь хочет попробовать?
Кто-нибудь хочет попробовать?
Я не знаю, так что мы подождем, пока не прибудет возможный доброволец.
Список задач ...
Несколько советов, которые помогут вам добиться прогресса:
python3 setup.py clean bundle
вы можете собрать все бинарные пакеты (используется PyInstaller).master
; мы можем захотеть использовать что-то вроде actions / create-release, чтобы сделать это менее трудоемким для нас.Мы получили супер-хороший ответ от @judej на опубликованный запрос сообщества разработчиков
Итог: у нас нет добровольцев MSI, но есть еще два интересных проекта: один создает установщик, а другой - приложение Python ZIP :
Это могут быть две хорошие альтернативы, которые стоит оценить. Спасибо, Джуд! : 100:: medal_m military:
Прохладный. Я также недавно слышал о PyOxidizer . Я все еще не уверен на 100%, что понял проект ( обсуждение ), но, возможно, он делает то, что мы хотим.
Я постараюсь сделать это с помощью shiv
на выходных. Пожалуйста, попробуйте PyOxidizer
и тогда мы сможем сравнить заметки.
Извините, я начал новую работу несколько дней назад и у меня не будет времени ничего делать :(
PyOxidizer
для меня звучит как эксперимент: приложение Python, работающее на «виртуальной машине Rust», уровне ОС, созданном с помощью Rust. Я не уверен, какую пользу это дает. Разве запускаемая нами установка PyInstaller
справляется со всем этим нормально? : 3rd_place_medal:
shiv
- это совершенно новый подход (новый в нашем «портфеле» релизных артефактов), который может быть интересно предоставить нашей аудитории. Я нахожу эту идею захватывающей (хотя готов поспорить, что мало кто ей воспользуется). : 2nd_place_medal:
pynsist
звучит как программа установки Microsoft Windows, которую мы ищем. Это может обеспечить тот опыт, который пользователи Windows ожидают:: one: Загрузить установщик,: two: запустить его, чтобы установить и добавить запись в меню «Пуск»,: 3: запустить приложение из меню «Пуск». : 1st_place_medal:
Обратной стороной пинсиста является только Windows. Я постараюсь продвигать Shiv (из LinkedIn) на Mac и Linux.
Самый полезный комментарий
Следующей замечательной вещью после получения EXE для Windows и пакетов для работы macOS может быть создание AppImage для Linux. Это что-то похожее на файл .dmg на Mac. Это было бы единое решение для всех дистрибутивов GNU / Linux! : тада:: смайлик:
AppImage также (отчасти) имеет AppStore, получивший название AppImageHub . И сравнение дает понять, что это действительно круто. : +1: