zipapp อัดโค้ด Python เป็นก้อนเดียวกัน

สวัสดีผู้อ่านทุกท่านครับ หากผู้อ่านเขียนโปรแกรมในภาษา Python ต้องการนำไปแจกจ่ายใช้งานเครื่องต่าง ๆ คงยุ่งยากกับการก็อปไฟล์โค้ดโปรแกรมหลายไฟล์ แถมอาจมีปัญหาไฟล์ไม่ครบและเวลาในการก็อปไฟล์ที่ช้า


ปัญหานี้แก้ไขได้ด้วยความสามารถ zipapp ใน Python 3.5 ขึ้นไป

zipapp เป็นความสามารถหนึ่งของภาษาไพทอน สามารถรวมไฟล์โค้ดไพทอนให้เป็นไฟล์เดียวด้วยการชิปไฟล์รวมเป็นก้อนแอพเดียวกัน

ไฟล์โค้ดไพทอนที่ถูกบีบอัดด้วย zipapp มีสองนามสกุลไฟล์ดังนี้

  • .pyz เป็นไฟล์ที่โชว์หน้าต่างไพทอน
  • .pyzw เป็นไฟล์ที่ไม่โชว์หน้าต่างไพทอน เหมาะสมกับโปรแกรมเช่น GUI และโปรแกรมที่ทำงานเบื้องหลัง

ในการสร้างไฟล์บีบอัดโค้ดด้วย zipapp ใน Python ทำได้ด้วยคำสั่งในคอมมาไลน์ python -m zipapp ชื่อโฟลเดอร์เก็บไฟล์

ตัวอย่างเช่น
ทำการสร้างไฟล์และโฟลเดอร์ตามนี้

app/  
└── __main__.py

โค้ดในไฟล์ __main__.py

ดูโค้ดได้ที่ https://gist.github.com/anonymous/7ab9d5acf61f6de5452236abc47f42dd

เปิดคอมมาไลน์ขึ้นมาใช้คำสั่ง python -m zipapp app
จะได้ไฟล์ app.pyz ทำการรันด้วยคำสั่ง python app.pyz
ผลลัพธ์
zipapp อัดโค้ด Python เป็นก้อนเดียวกัน

หากต้องการสร้างเป็นไฟล์ .pyzw ไม่ให้แสดงหน้าต่าง Python ให้เติม -o ตามด้วยชื่อไฟล์นามสกุล .pyzw ลงไป
ตามนี้ python -m zipapp app -o app.pyzw
จะได้ไฟล์ app.pyzw แล้วลองรันด้วยคำสั่ง python app.pyzw
ผลลัพธ์
.pyzw ไม่โชว์หน้าต่าง Python ไม่ปรากฎหน้าต่าง Python

หากต้องการให้ zipapp ทำการรันไฟล์ตามที่กำหนด
สามารถทำได้ด้วยคำสั่ง python -m zipapp ชื่อโฟลเดอร์เก็บไฟล์ -m "ไฟล์ในโฟลเดอร์:ฟังก์ชัน"

และมีอีกวิธีโดยทำในโค้ด Python อ่านได้จาก https://docs.python.org/3/library/zipapp.html

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
สอน Python

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *