ไม่กี่วันที่ผ่านมา นักพัฒนาเปิดตัวยูทิลิตี้ PyOxidizer เวอร์ชันแรกซึ่งเสนอเป็น ยูทิลิตี้ที่สามารถใช้เพื่อรวมโปรเจ็กต์ Python ลงในไฟล์ปฏิบัติการแยกต่างหากรวมถึงล่าม Python และไลบรารีและทรัพยากรที่จำเป็นทั้งหมด
ไฟล์ดังกล่าวสามารถทำงานได้ในสภาพแวดล้อมโดยไม่ต้องติดตั้งชุดเครื่องมือ Python หรือไม่คำนึงถึงความพร้อมใช้งานของ Python เวอร์ชันที่ต้องการ
PyOxidizer ยังสามารถสร้างไฟล์ปฏิบัติการที่เกี่ยวข้องกับสแตติกที่ไม่เกี่ยวข้องกับไลบรารีระบบ รหัสโครงการเขียนด้วยภาษา Rust และเผยแพร่ภายใต้ MPL (Mozilla Public License) 2.0
เกี่ยวกับ PyOxidizer?
โครงการ ขึ้นอยู่กับโมดูลที่มีชื่อเดียวกันสำหรับภาษา Rust ซึ่งช่วยให้คุณสามารถฝังตัวแปล Python ในโปรแกรม Rust ได้ เพื่อเรียกใช้สคริปต์ Python กับพวกเขา
ไพออกซิไดเซอร์ ตอนนี้ได้ย้ายไปไกลกว่าปลั๊กอินสำหรับ Rust แล้วและอยู่ในตำแหน่งเป็นเครื่องมือสำหรับผู้ชมที่กว้างขึ้นสำหรับการสร้างและแจกจ่ายแพ็คเกจ Python แบบสแตนด์อโลน
PyOxidizer โปรแกรมอรรถประโยชน์ที่มีจุดมุ่งหมายเพื่อแก้ปัญหาวิธีการแจกจ่ายแอปพลิเคชัน Python
สำหรับผู้ที่ไม่จำเป็นต้องแจกจ่ายแอปพลิเคชันในรูปแบบของไฟล์ปฏิบัติการ PyOxidizer เสนอโอกาสในการสร้างไลบรารีที่เหมาะสมเพื่อเชื่อมโยงกับแอปพลิเคชันใด ๆ เพื่อฝังตัวแปล Python และชุดส่วนขยายที่จำเป็นไว้ในนั้น
โดยทั่วไปแล้วการแจกจ่ายแอปพลิเคชัน Python ถือเป็นปัญหาที่ยังไม่ได้รับการแก้ไขเนื่องจาก Russel Keith-Magee ระบุว่าการกระจายรหัสเป็นภัยคุกคามที่มีอยู่ต่อการมีอายุยืนยาวสำหรับ Python ในคำพูดของเขา Python ไม่เคยมีประวัติที่สอดคล้องกันว่าฉันให้รหัสของฉันกับคนอื่นอย่างไรโดยเฉพาะอย่างยิ่งถ้าบุคคลนั้นไม่ใช่ผู้พัฒนาและต้องการใช้แอปพลิเคชันของฉัน
สำหรับผู้ใช้ปลายทางการส่งมอบโปรเจ็กต์เป็นไฟล์ปฏิบัติการไฟล์เดียว ช่วยลดความยุ่งยากในการติดตั้งและลดการเลือกการอ้างอิงซึ่งมีความสำคัญตัวอย่างเช่นสำหรับโครงการ Python ที่ซับซ้อนเช่นโปรแกรมตัดต่อวิดีโอ
ในขณะที่ในทางกลับกัน สำหรับนักพัฒนาแอพพลิเคชั่น PyOxidizer ช่วยให้พวกเขาประหยัดเวลาในการจัดระเบียบการส่งแอพพลิเคชั่น โดยไม่ต้องใช้เครื่องมือต่าง ๆ เพื่อสร้างแพ็คเกจสำหรับระบบปฏิบัติการที่แตกต่างกัน
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 พร้อมกับปัญหาแพ็กเกจสำหรับโปรเจ็กต์ที่เกี่ยวข้องกับส่วนขยายที่ซับซ้อนของภาษา C
ในขณะที่ไม่มีคำแนะนำในการสนับสนุนการจัดส่ง ("pyoxidizer add", "pyoxidizer analysis" และ "pyoxidizer upgrade") และการสนับสนุน Terminfo และ Readline ที่ จำกัด แต่การขาดการสนับสนุนสำหรับเวอร์ชันอื่นที่ไม่ใช่ Python 3.7 การขาดการสนับสนุนการบีบอัดทรัพยากร ไม่สามารถข้ามคอมไพล์ได้
Fuente: https://pyoxidizer.readthedocs.io