Paglabas ng PyOxidizer para sa pag-package ng mga proyekto ng Python sa mga self-contained na executable

Ipinasa ni unang release ng utility PyOxidizer, na nagbibigay-daan sa iyong mag-package ng isang Python project sa isang self-contained executable file na kinabibilangan ng Python interpreter at lahat ng mga library at mapagkukunang kailangan para sa trabaho. Ang mga nasabing file ay maaaring patakbuhin sa mga kapaligiran na walang mga tool sa Python na naka-install o anuman ang kinakailangang bersyon ng Python. Ang PyOxidizer ay maaari ding bumuo ng mga statically linked executable na hindi rin naka-link sa mga library ng system. Ang code ng proyekto ay nakasulat sa Rust at ipinamahagi ni lisensyado sa ilalim ng MPL (Mozilla Public License) 2.0.

Ang proyekto ay batay sa module na may parehong pangalan para sa Rust na wika, na nagbibigay-daan sa iyong mag-embed ng isang Python interpreter sa mga Rust program upang magsagawa ng mga script ng Python sa kanila. Ang PyOxidizer ay lumipat na ngayon nang higit pa sa pagiging Rust add-on at ipinoposisyon ang sarili bilang isang tool para sa pagbuo at pamamahagi ng mga self-contained na Python package para sa mas malawak na audience. Para sa mga hindi kailangang ipamahagi ang mga application bilang isang executable, ang PyOxidizer ay nagbibigay ng kakayahang bumuo ng mga library na angkop para sa pag-link sa anumang application upang mag-embed ng isang Python interpreter at ang kinakailangang hanay ng mga extension sa kanila.

Para sa mga end user, ang paghahatid ng proyekto bilang isang solong executable na file ay lubos na pinapasimple ang pag-install at inaalis ang gawain ng pagpili ng mga dependency, na may kaugnayan, halimbawa, para sa mga kumplikadong proyekto ng Python, tulad ng mga editor ng video. Para sa mga developer ng application, pinapayagan ka ng PyOxidizer na makatipid ng oras sa pag-aayos ng paghahatid ng isang application, nang hindi kinakailangang gumamit ng iba't ibang mga tool upang bumuo ng mga pakete para sa iba't ibang mga operating system.

Ang paggamit ng mga iminungkahing asembliya ay mayroon ding positibong epekto sa pagganap - ang mga file na nabuo sa PyOxidizer ay tumatakbo nang mas mabilis kaysa kapag gumagamit ng system na Python dahil sa pag-aalis ng mga pag-import at ang kahulugan ng mga pangunahing module. Sa PyOxidizer, ang mga module ay ini-import mula sa memorya - lahat ng mga built-in na module ay agad na na-load sa memorya at pagkatapos ay ginagamit nang walang disk access). Sa mga pagsubok, ang oras ng pagsisimula ng application kapag gumagamit ng PyOxidizer ay nababawasan ng halos kalahati.

Sa mga umiiral nang katulad na proyekto, mapapansin natin: PyInstaller (i-unpack ang file sa isang pansamantalang direktoryo at mag-import ng mga module mula dito), py2exe (nakatali sa Windows platform at nangangailangan ng pamamahagi ng maramihang mga file), py2app (nakatali sa macOS), cx-freeze (nangangailangan ng hiwalay na dependency packaging), Shiva ΠΈ PEX (bumuo ng isang pakete sa zip format at nangangailangan ng Python sa system), gabi (compile ang code sa halip na i-embed ang interpreter), pinsist (nakatali sa Windows), PyRun (pagmamay-ari na pag-unlad nang hindi ipinapaliwanag ang mga prinsipyo ng pagpapatakbo).

Sa kasalukuyang yugto ng pag-unlad, ipinatupad na ng PyOxidizer ang pangunahing pag-andar para sa pagbuo ng mga maipapatupad na file para sa Windows, macOS at Linux. Sa mga pagkakataong hindi pa magagamit nabanggit kakulangan ng karaniwang build environment, kawalan ng kakayahang bumuo ng mga package sa MSI, DMG at deb/rpm na mga format, mga problema sa mga proyekto sa packaging na may kasamang mga kumplikadong C extension, kakulangan ng mga utos na samahan ng paghahatid ("pyoxidizer add", "pyoxidizer analysis" at "pyoxidizer upgrade" ), limitadong suporta para sa Terminfo at Readline, walang suporta para sa mga release maliban sa Python 3.7, walang suporta para sa resource compression, walang cross-compilation.

Pinagmulan: opennet.ru

Magdagdag ng komento