URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 117729
[ Назад ]

Исходное сообщение
"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."

Отправлено opennews , 25-Июн-19 13:12 
Представлен (https://gregoryszorc.com/blog/2019/06/24/building-standalone.../) первый выпуск утилиты PyOxidizer (https://pyoxidizer.readthedocs.io/en/latest/index.html), позволяющей упаковать проект на языке Python в форму самодостаточного исполняемого файла, включающего интерпретатор Python и все необходимые для работы библиотеки и ресурсы. Подобные файлы могут выполняться в окружениях без установленного инструментария Python или независимо от наличия необходимой версии Python. PyOxidizer также может формировать статически связанные исполняемые файлы, которые не привязаны и к системным библиотекам. Код проекта написан на языке Rust и распространяется (https://github.com/indygreg/PyOxidizer) под лицензией MPL (Mozilla Public License) 2.0.

Проект основан на одноимённом модуле для языка Rust, позволяющем встраивать Python-интерпретатор в программы на Rust для выполнения в них Python-скриптов. PyOxidizer теперь вышел за рамки дополнения для Rust и позиционируется как доступный для более широкой аудитории инструмент для формирования и распространения самодостаточных пакетов с Python. Для тех кому не нужно распространять приложения в виде исполняемого файла, PyOxidizer  предоставляет возможности по генерации библиотек, пригодных для связывания с любыми приложениями для встраивания в них интерпретатора Python и необходимого набора расширений.

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


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

Из уже существующих похожих проектов можно отметить: PyInstaller (https://www.pyinstaller.org/) (распаковывает файл во временный каталог и импортирует модули из него), py2exe (http://www.py2exe.org/) (привязан к платформе Windows и требует распространения нескольких файлов), py2app (https://py2app.readthedocs.io/en/latest/) (привязан к macOS), cx-freeze (https://cx-freeze.readthedocs.io/en/latest/) (требует отдельной упаковки зависимостей), Shiv (https://shiv.readthedocs.io/en/latest/) и PEX (https://github.com/pantsbuild/pex) (формируют пакет в формате zip и требует наличия Python в системе), Nuitka (http://nuitka.net/pages/overview.html) (компилирует код, а не встраивает интерпретатор), pynsist (https://pynsist.readthedocs.io/en/latest/index.html) (привязан к Windows), PyRun (https://www.egenix.com/products/python/PyRun) (проприетарная разработка без пояснения принципов работы).


На текущем этапе развития в PyOxidizer  уже реализована основная функциональность по генерации исполняемых файлов для Windows, macOS и Linux. Из пока недоступных  возможностей отмечается (https://pyoxidizer.readthedocs.io/en/latest/status.html) отсутствие типового сборочного окружения,  невозможность генерации пакетов в форматах MSI, DMG и deb/rpm, проблемы с упаковкой проектов, включающих сложные расширения на языке Си, отсутствие команд для сопровождения доставки ("pyoxidizer add", "pyoxidizer analyze" и "pyoxidizer upgrade"), ограниченная поддержка Terminfo и Readline, отсутствие поддержки выпусков отличных от  Python 3.7, отсутствие поддержки сжатия ресурсов, невозможность кросс-компиляции.


URL: https://gregoryszorc.com/blog/2019/06/24/building-standalone.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=50957


Содержание

Сообщения в этом обсуждении
"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 13:12 
Звучит неплохо, а как там с библиотеками? Можно напихать в бинарник matplotlib и pyside, pygobject или wxpython? Именно с тяжелыми, зависимыми от кода на C/C++ библиотеками в основном проблемы у всяких упаковщиков и компиляторов питона.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено анонимище , 25-Июн-19 14:01 
Ещё интересно как программы на QT будут упаковываться

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Зелень , 25-Июн-19 19:59 
QT написан на Objective C вообще-то.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 23:04 
шта?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено анон , 26-Июн-19 00:29 
как же вы достали, борцуны за правильный регистр одной буквы. контекст, слышал такое слово? из контекста понятно, о каком кутэ идет речь

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Зелень , 26-Июн-19 08:22 
Это вообще-то баян такой древний. Да и тот, кто действительно работает с Qt, навряд ли будет писать QT.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Ordu , 28-Июн-19 15:05 
Ему надо показать свою эрудированность. Не мешай.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 20:00 
Как-то так https://download.qt.io/official_releases/qt-installer-framew.../

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 26-Июн-19 09:08 
Qt Installer Framework есть кроссплатформенный. В том смысле, что скрипт тот же самый - это удобно. Если платформенное приложение пишете, то имеет смысл платформенные же инсталляторы и использовать: есть удобные для Windows, macOS, для Linux посложнее. Библиотеки Qt можно полностью поставить на компьютер пользователя, а можно только необходимые. В последнем случае запускаете свое приложение на "чистом" компьютере и смотрите, каких библиотек не хватает. Их в дистрибутив и копируете. Количество и состав данных библиотек зависит от приложения, компилятора (что-то может потребоваться и из системы разработки приложений), платформы и версии Qt.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Анончик999999 , 25-Июн-19 14:18 
А еще интересно, если туда засунуть Numpy + Matplotlib + SymPy. Не будет ли в итоге больше гигабайта все весить. Наверно, если даже удастся скомпилирывать, то будет, так как пока не умеет сжатие ресурсов. Но прокт интересный, было б не плохо конкурирывать с PyInstaller, cxFreeze.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено GG , 25-Июн-19 14:36 
Ты болен что ли?
Там больше сотни мегабайт весить нечему.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Анончик999999 , 25-Июн-19 15:06 
Numpy тянет MKL. Он много весит. Собери, посмотри, а потом хами.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Amphyby , 25-Июн-19 15:05 
накопи уже на Вольфрам Математику в конце то концов

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:35 
А там можно компилировать. Мне просто надо компилировать ;)

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 18:13 
Не проще на Julia перейти?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Анончик999999 , 26-Июн-19 00:51 
нет, потому что используется еще куча других пакетов.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Led , 26-Июн-19 00:59 
> используется еще куча других пакетов.

Прекращай нюхать клей - на тебя пакетов не напасёшся.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 26-Июн-19 11:00 
Перепишите критические вычисления на Julia. Остальной код освободите от питона позже. На Julia можно подключать питон-код для связывания со старыми приложениями. + для Julia есть свой упаковщик.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Игорь , 25-Июн-19 13:12 
Надеюсь антивирусы не так убивают скорость запуска с PyOxidizer как это происходит с PyInstaller. Там вообще жесть.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Анончик999999 , 25-Июн-19 14:21 
А как интивирусы убивают скорость запуска с PyInstaller? Программы на Python вообще долго запускаются. А, если еще все тяжёлое сожмешь UPX, так вообще около минуты загружается с полтора раза болшим размером оперативы в Windows.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 16:03 
> А как интивирусы убивают скорость запуска с PyInstaller?

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


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Wilem , 26-Июн-19 14:21 
Не надо пользоваться антивирусами — это лапша на уши домохозяйкам. Бывает конечно на работе заставляют, но обычно можно попросить исключить некоторые директории из скана.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено анон , 25-Июн-19 13:12 
Самое то, чтобы ждать зоопарк пакетов по дуалапу, вместо апгета и одного пакета.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 13:38 
Контейнеры в винду скоро завезут и будет вам софт гигабайтный. Блокноты на гугле хроме)

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено анонимище , 25-Июн-19 14:05 
Такие уже есть, VSCode

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 18:25 
vscodium*
Total disk usage: 266.4 MiB

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Wilem , 26-Июн-19 14:22 
Контейнеры в винде есть с WS2016 / Windows 10.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 13:44 
> Код проекта написан на языке Rust
> Проект основан на одноимённом модуле для языка Rust, позволяющем встраивать Python-интерпретатор в программы на Rust для выполнения в них Python-скриптов

Какое тонкое глумление над Питоном!


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено iPony129412 , 25-Июн-19 13:59 
Ещё в SNAP прикольно пайтон присовывать

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 14:01 
Nuitka для этих целей поинтересней будет. Она преобразует весь питоний код в C/C++ и компилит бинарник.

Кстати, названо в честь жены разработчика Анны (Anna -> Annuitka -> Nuitka). Соответственно, читается «Нютка».


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Анончик999999 , 25-Июн-19 14:30 
А как на счёт тяжелых приложений, да и с Matplotlib, Numpy, SymPy, OpenCV и т.д.? Все компирилует без проблем с C-расширениями?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:06 
Если тяжёлое приложение написано без особых изощрений, то «Нютке» в общем пофиг. Что сто строчек в си перегнать, что сто тысяч.

NumPy точно поддерживается. Остальное надо смотреть индивидуально. Разработчик очень активен, если какая-то экзотика не заработает, он может достаточно оперативно починить.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 14:55 
Анютка = Aniutka

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:10 
«Anna -> Annuitka -> Nuitka» — это из презентации самого разработчика с PyCon. Он немец. Видимо, какие-то особенности немецкого написания.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 16:29 
Когда смотрел падала твоя Нуитка с PySide ом докрутить конечно можно, но уж больно геморно под конкретный компилятор код подгонять. Тогда уже cython если нужна скорость.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено VINRARUS , 25-Июн-19 14:11 
А есть тоже самое для shell?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено PnDx , 25-Июн-19 14:55 
Молодость. FIDOnet. 90-е. Вопрос "а есть ли компилятор для bash"…
А вот таки есть что-то https://www.google.com/search?q=bash+compiler

* Т.к. bash является надмножеством shell (чуть-чуть не, но не будем придираться), ответ — по теме.
Это disclaimer для выступлений "я не такой, у меня *sh". Всё-таки bash сейчас mainstream, его даже в openindiana притащили "из коробки" вместо ksh.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено VINRARUS , 25-Июн-19 16:59 
Вообще сам интерпритатор bash это сильно заторможеный sh. ;-)
Dash же пошол путём ускорения и оптимизаций, по этому я выбрал этот интерпритатор для своих shell скриптов, а bash оставил для врагов. :D

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Грусть , 25-Июн-19 14:13 
Nix уже есть. Подходит не только для питона.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:36 
Потоки там работают так же а чего с памятью гарбидж коллектор там какой?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено via , 25-Июн-19 14:59 
>>> Для конечных пользователей поставка проекта в виде одного исполняемого файла

Смотря какого размера. Если как у Бульдозера - ок/ больше, лучше уж в snap пихать


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:02 
А давайте, как гетеросексуальные белые мужчины, просто напишем компилятор Python --> .exe/.c/.asm/go/.deb/snap!

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 15:36 
Не тупи уже написали такой компилятор - Golang.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 16:24 
Pyinstaller самый лучший из того что предлагают альтернативы уже давно им пользуюсь. И антивири на него давно уже не ругаются. А Nuitka глюки с сег фолотом глючит c Pyside не понимает конструкции clicked.connect() просит полную версию QObject.connect и слоты с указанием типов передаваемых данных.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Mail , 25-Июн-19 16:34 
вот так раст всех и заборет.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено fsb4000 , 25-Июн-19 17:34 
в чём смысл? в большинство linux дистрибутивов входит python, во всяких freebsd, openindiana тоже.

Python рантайм очень маленький, на Windows python занимает ~75 мегабайт, та же java 12, 386 мегабайт. Но зато каждый скрипт будет занимать килобайты.

Всегда проще попросить пользователя установить рантайм, чем заниматься такой чушью, нерациональное использование дискового пространства


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 25-Июн-19 23:12 
> в большинство linux дистрибутивов входит python

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

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


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Annoynymous , 26-Июн-19 17:47 
> Всегда проще попросить пользователя установить рантайм, чем заниматься такой чушью, нерациональное использование дискового пространства

Ну да. Линуксоиды не понимают, что на самом деле наоборот.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено anonymous , 25-Июн-19 18:01 
Достойный ответ на отказ многих дистрибутивов от поддержки второго питона. Чем переписывать свой проект, проще его перепаковать статически.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Led , 26-Июн-19 01:04 
Зачем г^Hудобрения перепаковывать?

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено xi , 25-Июн-19 19:33 
Почему-то не упомянули Cython, который в чём-то похож на Nuitka.

Почему-то не упомянули модуль zipapp, который включён в комплект CPython 3.5 и может делать архивы и исполняемые файлы (тоже требуется python в системе).

py2exe НЕ "требует распространения нескольких файлов" - для сборки одного самодостаточного исполняемого файла нужно использовать параметр bundle_files=1 и что-то ещё (не помню, давно не использую винду). Во всяком случае, получались работоспособные самостоятельные .exe, как консольные, так и графические - на wxWidgets.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Неадекват , 26-Июн-19 10:58 
> для сложных проектов на Python, таких как видеоредакторы

Поубивал бы.


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 26-Июн-19 12:08 
> Поубивал бы.

Так вот, кто виноват в том, что у нас до сих пор нет сложных проектов на питоне?.....


"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним3 , 01-Июл-19 18:50 
на нем реально не хорошо делать сложный проект. вот обвязку над субпрограммами в проекте самое то. или простенькие скрипты с быстрыми расчетами. а если комбайин посерьезнее что то, то лучше все таки компилируемые языки . их обвязать на питоне самое то. тот же ткинтер есть везде.  а вообще писать на питоне прикольно. и проверять скрипты быстро, сам расскажет если где че учудил))

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 26-Июн-19 13:15 
Началось. Как всегда. Создаём удобный язык для скриптов, потом разрастаем его до всеобъемлющего монстра, потом пытаемся волшебным образом превратить его в нативный. Нездоровой энергии у людей уйма.

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 26-Июн-19 14:06 
Интересно, а `meson` можно упаковать с помощью этой штуки?
Наверняка там полно расширений на Си, да и вообще программа сложная

"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Отправлено Аноним , 27-Июн-19 01:52 
оно лучше чем nuitka в плане производительности?