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๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์•ฝ ์ ˆ๋ฐ˜์œผ๋กœ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์œ ์‚ฌํ•œ ํ”„๋กœ์ ํŠธ ์ค‘์—์„œ ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด ์ธ์Šคํ†จ๋Ÿฌ (ํŒŒ์ผ์„ ์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์••์ถ•์„ ํ’€๊ณ  ์—ฌ๊ธฐ์—์„œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.) ํŒŒ์ด2exe (Windows ํ”Œ๋žซํผ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ํŒŒ์ผ์ด ํ•„์š”ํ•จ) ํŒŒ์ดํˆฌ์•ฑ (macOS์— ์—ฐ๊ฒฐ๋จ), cx-๋™๊ฒฐ (๋ณ„๋„์˜ ์ข…์†์„ฑ ํŒจํ‚ค์ง• ํ•„์š”) Shiv ะธ PEX (zip ํ˜•์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹œ์Šคํ…œ์— Python์ด ํ•„์š”ํ•จ) ๋ˆ„์ดํŠธ์นด (์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‚ด์žฅํ•˜๋Š” ๋Œ€์‹  ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค) ํ•€์‹œ์ŠคํŠธ (Windows์— ์—ฐ๊ฒฐ๋จ) ํŒŒ์ด๋Ÿฐ (์ž‘๋™ ์›๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช… ์—†์ด ๋…์ž์ ์ธ ๊ฐœ๋ฐœ)

ํ˜„์žฌ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ PyOxidizer๋Š” ์ด๋ฏธ Windows, macOS ๋ฐ Linux์šฉ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ธฐํšŒ์—์„œ ์ง€์ ํ•œ ํ‘œ์ค€ ๋นŒ๋“œ ํ™˜๊ฒฝ ๋ถ€์กฑ, MSI, DMG ๋ฐ deb/rpm ํ˜•์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ, C ์–ธ์–ด์˜ ๋ณต์žกํ•œ ํ™•์žฅ์ด ํฌํ•จ๋œ ํŒจํ‚ค์ง• ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๋ฌธ์ œ, ์ „๋‹ฌ์„ ์ง€์›ํ•˜๋Š” ๋ช…๋ น ๋ถ€์กฑ("pyoxidizer add", "pyoxidizer analyze") ๋ฐ "pyoxyizer ์—…๊ทธ๋ ˆ์ด๋“œ"), Terminfo ๋ฐ Readline์— ๋Œ€ํ•œ ์ œํ•œ๋œ ์ง€์›, Python 3.7 ์ด์™ธ์˜ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์ง€์› ๋ถ€์กฑ, ๋ฆฌ์†Œ์Šค ์••์ถ• ์ง€์› ๋ถ€์กฑ, ํฌ๋กœ์Šค ์ปดํŒŒ์ผ ๋ถˆ๊ฐ€๋Šฅ.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€