Выпуск PyOxidizer для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² самодостаточныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ PyOxidizer, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° языкС Python Π² Ρ„ΠΎΡ€ΠΌΡƒ самодостаточного исполняСмого Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ рСсурсы. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² окруТСниях Π±Π΅Π· установлСнного инструмСнтария Python ΠΈΠ»ΠΈ нСзависимо ΠΎΡ‚ наличия Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ вСрсии Python. PyOxidizer Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСски связанныС исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ привязаны ΠΈ ΠΊ систСмным Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написан Π½Π° языкС Rust ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MPL (Mozilla Public License) 2.0.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ основан Π½Π° ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ для языка Rust, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Python-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Rust для выполнСния Π² Π½ΠΈΡ… Python-скриптов. PyOxidizer Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΡˆΠ΅Π» Π·Π° Ρ€Π°ΠΌΠΊΠΈ дополнСния для Rust ΠΈ позиционируСтся ΠΊΠ°ΠΊ доступный для Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ инструмСнт для формирования ΠΈ распространСния самодостаточных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с Python. Для Ρ‚Π΅Ρ… ΠΊΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ прилоТСния Π² Π²ΠΈΠ΄Π΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, PyOxidizer прСдоставляСт возмоТности ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для связывания с Π»ΡŽΠ±Ρ‹ΠΌΠΈ прилоТСниями для встраивания Π² Π½ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

Для ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ поставка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ установку ΠΈ избавляСт ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΏΠΎΠ΄Π±ΠΎΡ€Ρƒ зависимостСй, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Python, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π΅ΠΎΡ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ PyOxidizer позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ доставки прилоТСния, Π±Π΅Π· нСобходимости использования Ρ€Π°Π·Π½Ρ‹Ρ… инструмСнтов для формирования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… сборок Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ — сгСнСрированныС Π² PyOxidizer Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании систСмного Python Π·Π° счёт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ опрСдСлСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’ PyOxidizer ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· памяти — всС встроСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ сразу Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±Π΅Π· обращСния ΠΊ диску). Π’ тСстах врСмя запуска прилоТСния ΠΏΡ€ΠΈ использовании PyOxidizer сокращаСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π°.

Из ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ: PyInstaller (распаковываСт Ρ„Π°ΠΉΠ» Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ), py2exe (привязан ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ распространСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²), py2app (привязан ΠΊ macOS), cx-freeze (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ зависимостСй), Shiv ΠΈ PEX (Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ zip ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия Python Π² систСмС), Nuitka (ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄, Π° Π½Π΅ встраиваСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€), pynsist (привязан ΠΊ Windows), PyRun (проприСтарная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±Π΅Π· пояснСния ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹).

На Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ этапС развития Π² PyOxidizer ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² для Windows, macOS ΠΈ Linux. Из ΠΏΠΎΠΊΠ° нСдоступных возмоТностСй отмСчаСтся отсутствиС Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ сборочного окруТСния, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… MSI, DMG ΠΈ deb/rpm, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… слоТныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° языкС Π‘ΠΈ, отсутствиС ΠΊΠΎΠΌΠ°Π½Π΄ для сопровоТдСния доставки («pyoxidizer add», «pyoxidizer analyze» ΠΈ «pyoxidizer upgrade»), ограничСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Terminfo ΠΈ Readline, отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ выпусков ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Python 3.7, отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сТатия рСсурсов, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ кросс-компиляции.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ