Convert Python To EXE
ในบทความนี้ผมจะมาแนะนำเครื่องมือสำหรับการแปลงไฟล์ .py ซึ่งเป็นไฟล์โปรแกรมของ python ให้เป็นไฟล์ .exe กันครับ
วิธีที่ 1 ใช้ pyinstaller
Pyinstaller เป็นเครื่องมือหลักในการแปลงไฟล์ .py ให้เป็นไฟล์ .exe ซึ่งถ้าหากใครยังไม่ได้ติดตั้งเอาไว้ สามารถติดตั้งได้ง่ายๆ โดยใช้คำสั่ง
pip install pyinstaller
จากนั้นเปลี่ยนโฟลเดอร์ของ cmd ไปที่โฟลเดอร์ของโปรแกรม แล้วใช้คำสั่งต่อไปนี้ในการแปลงไฟล์ .py ที่เราต้องการเป็น exe
pyinstaller sample.py
ซึ่งไฟล์ exe ที่ได้จะอยู่ในโฟลเดอร์
C:\Users\{UserName}\dist
แต่คำสั่งข้างต้นนี้ เป็นเพียงคำสั่งอย่างง่ายเท่านั้น จริงๆ แล้วเรายังสามารถกำหนดได้หลายอย่าง เช่น เพิ่มไอคอนให้โปรแกรม หรือเลือกคอมไฟล์เป็นไฟล์เดียว หรือแยกไฟล์เป็นโฟลเดอร์ก็ได้ แต่หากเราไม่ได้แปลงไฟล์บ่อยๆ เราก็อาจจะลืมคำสั่งเหล่านี้ได้ ดังนั้นผมจึงมีเครื่องมืออีกตัวที่จะมาแนะนำ ให้เราสามารถแปลงไฟล์ได้ง่ายขึ้น นั้นก็คือใช้โปรแกรม auto-py-to-exe นั่นเองครับ
วิธีที่ 2 ใช้โปรแกรม auto-py-to-exe
เปิด cmd แล้วติดตั้งโปรแกรม โดยใช้คำสั่งต่อไปนี้
pip install auto-py-to-exe
จากนั้นรันโปรแกรมโดยใช้คำสั่ง
auto-py-to-exe
เมื่อโปรแกรมรันขึ้นมาแล้วจะมีหน้าตาดังนี้
Scrip Location
ให้เราเลือกไฟล์ python ที่ต้องการแปลงเป็น exe
Onefile/OneDirectory
ให้เราคลิกเลือกรูปแบบการแปลง ถ้าหากเลือกเป็น OneDirectory เราก็จะได้ไฟล์โปรแกรมในรูปแบบของโฟลเดอร์ ซึ่งภายในโฟลเดอร์นั้นจะประกอบไปด้วยไฟล์ต่างๆ ที่โปรแกรมของเราจำเป็นต้องใช้ รวมทั้งไฟล์ exe ด้วย ซึ่งตัวไฟล์ exe จะมีขนาดเล็ก ทำให้รันได้เร็ว
แต่ถ้าหากเราเลือกเป็น onefile ไฟล์ทั้งหมดที่จำเป็นต้องใช้จะถูกรวมเข้ามาอยู่ในไฟล์เดียวกันกับโปรแกรมของเรา กลายเป็นไฟล์ exe ไฟล์เดียว ซึ่งจะมีขนาดใหญ่ และใช้เวลาในการเปิดโปรแกรมนานกว่า แต่ก็สะดวกในการใช้งาน เวลาจะเอาไปรันเครื่องอื่น ก็ไม่ต้องกังวลว่าเราจะ copy ไฟล์ไม่หมด
Console Window
หากเลือกเป็น Console base เวลารันโปรแกรมขึ้นมา ก็จะมีหน้า Console โผล่ขึ้นมาด้วย ถึงแม้ว่าโปรแกรมของเราจะถูกเขียนแบบ GUI ก็ตาม และผมแนะนำว่าให้เลือกวิธีนี้ เพราะหากโปรแกรมของเรามี error ข้อความ error ก็จะแสดงในหน้า Console ให้เราได้เห็นเลย ทำให้ง่ายต่อการ debug โปรแกรม
ถ้าหากเราทดสอบโปรแกรมจนเสร็จเรียบร้อยแล้ว มั่นใจว่าไม่มี error ใดๆ อีกค่อยเลือกวิธี Window base ซึ่งจะไม่มีหน้า Console รันขึ้นมาพร้อมกับโปรแกรมของเรา (ถ้าหากเราเขียนโปรแกรมแบบ GUI)
Icon: เอาไว้เลือกไฟล์ไอคอนให้โปรแกรม GUI ของเรา
Additional files, Advanced, Setting: โดยปกติไม่จำเป็นต้องไปตั้งค่าใดๆ แต่ถ้าหากเราอยากกำหนด output folder ก็ให้กำหนดได้ใน Setting
เมื่อกำหนดค่าต่างๆ เสร็จแล้ว ให้เรากดปุ่ม Convert ที่อยู่ด้านล่างได้เลย
ไฟล์ exe ที่ได้จากการแปลงจะอยู่ใน output folder หากเราไม่อยากไปเปิดหาเองก็กดปุ่ม OPEN OUTPUT FOLDER ได้เลย
เคล็ดลับเพิ่มเติม
- ไฟล์อื่นๆ
หากโปรแกรมของเราต้องทำงานร่วมกับไฟล์อื่นๆ เช่นไฟล์รูปภาพ ไฟล์ text ซึ่งไฟล์เหล่านี้อาจมีการเปลี่ยนแปลงได้ในอนาคต เราก็ไม่ต้องรวมไฟล์เหล่านี้เข้ามาไว้ในไฟล์ .exe เราแค่ใส่ชื่อไฟล์เหล่านี้ไว้ในโปรแกรมก็พอ แล้วก็อปปี้ไฟล์เหล่านั้นมาไว้ในโฟลเดอร์เดียวกันกับไฟล์ exe โปรแกรมก็จะรันได้ไม่มีปัญหาเช่นกัน หรือเราจะทำเป็น text box ให้ผู้ใช้งานเลือกไฟล์ก็ได้ - โมดูลอื่นๆ
ถึงแม้ว่าเราจะกดรันไฟล์ .py ได้โดยไม่มี error ใดๆ แต่เมื่อทำเป็น exe แล้วโปรแกรมเราอาจจะ error และไม่ทำงานก็ได้ นั่นเป็นเพราะว่าโปรแกรมของเรามีการเรียกใช้โมดูลอื่นๆ ที่เราไม่ได้ import เข้ามาในโปรแกรม ดังนั้นก่อนทำเป็นไฟล์ exe ให้เรา import โมดูลที่ใช้งานเข้ามาให้หมด (ถ้าไม่รู้ว่าใช้อันไหนบ้าง ให้ดู error ในหน้า Console เวลารันโปรแกรม) - GUI
หากคุณสร้าง GUI ด้วยเครื่องมือต่างๆ เช่น Tkinter ที่มันไม่ได้ใช้ไลบารี่ของวินโดว์ เมื่อโปรแกรมเกิด error ขึ้นมา จะไม่มีข้อความแจ้งเตือนใดๆ ซึ่งต่างจากโปรแกรมที่เขียนโดยใช้ไลบารี่ของวินโดว์ ซึ่งจะมีข้อความเตือน และปิดโปรแกรมทันทีเมื่อเรากด OK ดังนั้นหากโปรแกรมของคุณเป็นโปรแกรมที่ทำงานแบบต่อเนื่อง ควรเพิ่มตัวอัพเดทเวลาเข้ามาในโปรแกรม เพื่อให้ผู้ใช้เห็นว่าโปรแกรมยังทำงานอยู่ตามปกติ