The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Выпуск PyOxidizer для упаковки Python-проектов в самодостато..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 25-Июн-19, 13:12   +/
Звучит неплохо, а как там с библиотеками? Можно напихать в бинарник matplotlib и pyside, pygobject или wxpython? Именно с тяжелыми, зависимыми от кода на C/C++ библиотеками в основном проблемы у всяких упаковщиков и компиляторов питона.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #12

2. Сообщение от Игорьemail (??), 25-Июн-19, 13:12   –2 +/
Надеюсь антивирусы не так убивают скорость запуска с PyOxidizer как это происходит с PyInstaller. Там вообще жесть.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13, #54

3. Сообщение от анон (?), 25-Июн-19, 13:12   –3 +/
Самое то, чтобы ждать зоопарк пакетов по дуалапу, вместо апгета и одного пакета.
Ответить | Правка | Наверх | Cообщить модератору

4. Сообщение от Аноним (4), 25-Июн-19, 13:38   +5 +/
Контейнеры в винду скоро завезут и будет вам софт гигабайтный. Блокноты на гугле хроме)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #55

5. Сообщение от Аноним (5), 25-Июн-19, 13:44   +6 +/
> Код проекта написан на языке Rust
> Проект основан на одноимённом модуле для языка Rust, позволяющем встраивать Python-интерпретатор в программы на Rust для выполнения в них Python-скриптов

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

Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от iPony129412 (?), 25-Июн-19, 13:59   +/
Ещё в SNAP прикольно пайтон присовывать
Ответить | Правка | Наверх | Cообщить модератору

7. Сообщение от Аноним (7), 25-Июн-19, 14:01   –1 +/
Nuitka для этих целей поинтересней будет. Она преобразует весь питоний код в C/C++ и компилит бинарник.

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14, #17, #30

8. Сообщение от анонимище (?), 25-Июн-19, 14:01   +/
Ещё интересно как программы на QT будут упаковываться
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #38, #39, #48

9. Сообщение от анонимище (?), 25-Июн-19, 14:05   +2 +/
Такие уже есть, VSCode
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #36

10. Сообщение от VINRARUS (ok), 25-Июн-19, 14:11   –1 +/
А есть тоже самое для shell?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16

11. Сообщение от Грусть (?), 25-Июн-19, 14:13   –2 +/
Nix уже есть. Подходит не только для питона.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27

12. Сообщение от Анончик999999 (?), 25-Июн-19, 14:18   –4 +/
А еще интересно, если туда засунуть Numpy + Matplotlib + SymPy. Не будет ли в итоге больше гигабайта все весить. Наверно, если даже удастся скомпилирывать, то будет, так как пока не умеет сжатие ресурсов. Но прокт интересный, было б не плохо конкурирывать с PyInstaller, cxFreeze.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #15, #21, #35

13. Сообщение от Анончик999999 (?), 25-Июн-19, 14:21   –1 +/
А как интивирусы убивают скорость запуска с PyInstaller? Программы на Python вообще долго запускаются. А, если еще все тяжёлое сожмешь UPX, так вообще около минуты загружается с полтора раза болшим размером оперативы в Windows.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #28

14. Сообщение от Анончик999999 (?), 25-Июн-19, 14:30   –1 +/
А как на счёт тяжелых приложений, да и с Matplotlib, Numpy, SymPy, OpenCV и т.д.? Все компирилует без проблем с C-расширениями?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #22

15. Сообщение от GG (ok), 25-Июн-19, 14:36   –8 +/
Ты болен что ли?
Там больше сотни мегабайт весить нечему.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #23

16. Сообщение от PnDx (ok), 25-Июн-19, 14:55   +/
Молодость. FIDOnet. 90-е. Вопрос "а есть ли компилятор для bash"…
А вот таки есть что-то https://www.google.com/search?q=bash+compiler

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #32

17. Сообщение от Аноним (17), 25-Июн-19, 14:55   –1 +/
Анютка = Aniutka
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #24

19. Сообщение от via (??), 25-Июн-19, 14:59   –1 +/
>>> Для конечных пользователей поставка проекта в виде одного исполняемого файла

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

Ответить | Правка | Наверх | Cообщить модератору

20. Сообщение от Аноним (-), 25-Июн-19, 15:02   +/
А давайте, как гетеросексуальные белые мужчины, просто напишем компилятор Python --> .exe/.c/.asm/go/.deb/snap!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #26

21. Сообщение от Amphyby (ok), 25-Июн-19, 15:05   –3 +/
накопи уже на Вольфрам Математику в конце то концов
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #25

22. Сообщение от Аноним (7), 25-Июн-19, 15:06   –1 +/
Если тяжёлое приложение написано без особых изощрений, то «Нютке» в общем пофиг. Что сто строчек в си перегнать, что сто тысяч.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

23. Сообщение от Анончик999999 (?), 25-Июн-19, 15:06   +6 +/
Numpy тянет MKL. Он много весит. Собери, посмотри, а потом хами.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

24. Сообщение от Аноним (7), 25-Июн-19, 15:10   +/
«Anna -> Annuitka -> Nuitka» — это из презентации самого разработчика с PyCon. Он немец. Видимо, какие-то особенности немецкого написания.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

25. Сообщение от Аноним (25), 25-Июн-19, 15:35   +2 +/
А там можно компилировать. Мне просто надо компилировать ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

26. Сообщение от Аноним (25), 25-Июн-19, 15:36   –1 +/
Не тупи уже написали такой компилятор - Golang.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

27. Сообщение от Аноним (25), 25-Июн-19, 15:36   –1 +/
Потоки там работают так же а чего с памятью гарбидж коллектор там какой?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

28. Сообщение от Аноним (28), 25-Июн-19, 16:03   +1 +/
> А как интивирусы убивают скорость запуска с PyInstaller?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

29. Сообщение от Аноним (30), 25-Июн-19, 16:24   +/
Pyinstaller самый лучший из того что предлагают альтернативы уже давно им пользуюсь. И антивири на него давно уже не ругаются. А Nuitka глюки с сег фолотом глючит c Pyside не понимает конструкции clicked.connect() просит полную версию QObject.connect и слоты с указанием типов передаваемых данных.
Ответить | Правка | Наверх | Cообщить модератору

30. Сообщение от Аноним (30), 25-Июн-19, 16:29   +/
Когда смотрел падала твоя Нуитка с PySide ом докрутить конечно можно, но уж больно геморно под конкретный компилятор код подгонять. Тогда уже cython если нужна скорость.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

31. Сообщение от Mail (?), 25-Июн-19, 16:34   +/
вот так раст всех и заборет.
Ответить | Правка | Наверх | Cообщить модератору

32. Сообщение от VINRARUS (ok), 25-Июн-19, 16:59   –1 +/
Вообще сам интерпритатор bash это сильно заторможеный sh. ;-)
Dash же пошол путём ускорения и оптимизаций, по этому я выбрал этот интерпритатор для своих shell скриптов, а bash оставил для врагов. :D
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

33. Сообщение от fsb4000 (?), 25-Июн-19, 17:34   –1 +/
в чём смысл? в большинство linux дистрибутивов входит python, во всяких freebsd, openindiana тоже.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #41, #56

34. Сообщение от anonymous (??), 25-Июн-19, 18:01   –4 +/
Достойный ответ на отказ многих дистрибутивов от поддержки второго питона. Чем переписывать свой проект, проще его перепаковать статически.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #45

35. Сообщение от Аноним (-), 25-Июн-19, 18:13   +/
Не проще на Julia перейти?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #43

36. Сообщение от Аноним (36), 25-Июн-19, 18:25   –2 +/
vscodium*
Total disk usage: 266.4 MiB
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

37. Сообщение от xi (??), 25-Июн-19, 19:33   –1 +/
Почему-то не упомянули Cython, который в чём-то похож на Nuitka.

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

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

Ответить | Правка | Наверх | Cообщить модератору

38. Сообщение от Зелень (?), 25-Июн-19, 19:59   –5 +/
QT написан на Objective C вообще-то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #40, #42

39. Сообщение от Аноним (39), 25-Июн-19, 20:00   +/
Как-то так https://download.qt.io/official_releases/qt-installer-framew.../
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

40. Сообщение от Аноним (40), 25-Июн-19, 23:04   +/
шта?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

41. Сообщение от Аноним (-), 25-Июн-19, 23:12   –2 +/
> в большинство linux дистрибутивов входит python

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

42. Сообщение от анон (?), 26-Июн-19, 00:29   –1 +/
как же вы достали, борцуны за правильный регистр одной буквы. контекст, слышал такое слово? из контекста понятно, о каком кутэ идет речь
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #47, #58

43. Сообщение от Анончик999999 (?), 26-Июн-19, 00:51   –5 +/
нет, потому что используется еще куча других пакетов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #44, #50

44. Сообщение от Led (ok), 26-Июн-19, 00:59   +5 +/
> используется еще куча других пакетов.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

45. Сообщение от Led (ok), 26-Июн-19, 01:04   +6 +/
Зачем г^Hудобрения перепаковывать?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

47. Сообщение от Зелень (?), 26-Июн-19, 08:22   +1 +/
Это вообще-то баян такой древний. Да и тот, кто действительно работает с Qt, навряд ли будет писать QT.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

48. Сообщение от Аноним (48), 26-Июн-19, 09:08   +/
Qt Installer Framework есть кроссплатформенный. В том смысле, что скрипт тот же самый - это удобно. Если платформенное приложение пишете, то имеет смысл платформенные же инсталляторы и использовать: есть удобные для Windows, macOS, для Linux посложнее. Библиотеки Qt можно полностью поставить на компьютер пользователя, а можно только необходимые. В последнем случае запускаете свое приложение на "чистом" компьютере и смотрите, каких библиотек не хватает. Их в дистрибутив и копируете. Количество и состав данных библиотек зависит от приложения, компилятора (что-то может потребоваться и из системы разработки приложений), платформы и версии Qt.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

49. Сообщение от Неадекватemail (?), 26-Июн-19, 10:58   +/
> для сложных проектов на Python, таких как видеоредакторы

Поубивал бы.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #51

50. Сообщение от Аноним (-), 26-Июн-19, 11:00   +/
Перепишите критические вычисления на Julia. Остальной код освободите от питона позже. На Julia можно подключать питон-код для связывания со старыми приложениями. + для Julia есть свой упаковщик.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

51. Сообщение от Аноним (51), 26-Июн-19, 12:08   +2 +/
> Поубивал бы.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #59

52. Сообщение от Аноним (52), 26-Июн-19, 13:15   +1 +/
Началось. Как всегда. Создаём удобный язык для скриптов, потом разрастаем его до всеобъемлющего монстра, потом пытаемся волшебным образом превратить его в нативный. Нездоровой энергии у людей уйма.
Ответить | Правка | Наверх | Cообщить модератору

53. Сообщение от Аноним (53), 26-Июн-19, 14:06   +/
Интересно, а `meson` можно упаковать с помощью этой штуки?
Наверняка там полно расширений на Си, да и вообще программа сложная
Ответить | Правка | Наверх | Cообщить модератору

54. Сообщение от Wilem (?), 26-Июн-19, 14:21   +/
Не надо пользоваться антивирусами — это лапша на уши домохозяйкам. Бывает конечно на работе заставляют, но обычно можно попросить исключить некоторые директории из скана.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

55. Сообщение от Wilem (?), 26-Июн-19, 14:22   +/
Контейнеры в винде есть с WS2016 / Windows 10.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

56. Сообщение от Annoynymous (ok), 26-Июн-19, 17:47   +/
> Всегда проще попросить пользователя установить рантайм, чем заниматься такой чушью, нерациональное использование дискового пространства

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

57. Сообщение от Аноним (-), 27-Июн-19, 01:52   +/
оно лучше чем nuitka в плане производительности?
Ответить | Правка | Наверх | Cообщить модератору

58. Сообщение от Ordu (ok), 28-Июн-19, 15:05   –1 +/
Ему надо показать свою эрудированность. Не мешай.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

59. Сообщение от Аноним3 (?), 01-Июл-19, 18:50   +/
на нем реально не хорошо делать сложный проект. вот обвязку над субпрограммами в проекте самое то. или простенькие скрипты с быстрыми расчетами. а если комбайин посерьезнее что то, то лучше все таки компилируемые языки . их обвязать на питоне самое то. тот же ткинтер есть везде.  а вообще писать на питоне прикольно. и проверять скрипты быстро, сам расскажет если где че учудил))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру