Python : การคอมไพล์ script ให้เป็น EXE

1. PyInstaller
การติดตั้ง
py -m pip install PyInstaller

การใช้งาน py -m PyInstaller script.py --noconsole --onefile
หากมี lib ที่ไม่ได้ถูกดึงเข้ามาโดย default ต้องสร้าง hook file ขึ้นมาเอง
โดยตั้งชื่อเป็น  hook-xxxxxxxx.xxxxxxx.py
xxx  คือ ชื่อ lib ที่ import เข้ามา
แล้วในคำสั่งใช้เพิ่ม --additional-hooks-dir=.

--------------------------------------------------------------------------------------------------
-

2.
ใน python จะใช้ module ที่ชื่อว่า py2exe ซึ่งไม่ได้มีอยู่ใน standard python
แต่เราก็ติดตั้งเองได้ไม่ยากครับ เริ่มด้วยการ ต่ออินเทอร์เน็ต แล้วไปที่ CMD

พิมพ์ py -m pip install py2exe ดังภาพ



ต่อมา ลองคอมไพล์  ด้วยคำสั่ง
py -m py2exe.build_exe <ไฟล์script.py> ดังภาพ


หากเจอ 3 missing Mudules หมายถึง เรายังไม่ได้ติดตั้ง pywin32 กับ readline

งั้นเริ่มด้วยการติดตั้ง readline model ก่อน
ด้วยคำสั่งดังนี้
py -m pip install pyreadline


จากนั้น ไปโหลด pywin32 สำหรับ python 3.4 ได้ที่
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win32-py3.4.exe/download

หรือ python อื่นๆ เลือกได้จากหน้านี้
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/

โหลดมาแล้วก็ติดตั้ง เป็นอันจบ




หรือหากจะใช้ pyinstaller แทน py2exe หากไม่ติดตั้ง 2 อันก่อนหน้า ก็จะพบ error แบบนี้เช่นกัน
จะเห็นว่ามันติดตั้งไม่ได้

ก็ให้ติดตั้ง pyreadline กับ pywin32 ก่อนเหมือนเดิม เมื่อติดตั้งแล้วก็จะสามารถติดตั้ง pyinstaller ได้แบบนี้


การ build ด้วย pyinstaller หากใช้คำสั่ง
py -m pyinstaller <ไฟล์ script.py> จะเกิด Error ขั้น ว่าไม่มี module อยู่


แก้ด้วยการเปลี่ยน pyinstaller เป็น PyInstaller ครับ

หรือหากไม่ต้องการให้มี console โผลขึ้นมาในตอน execute โปรแกรม ก็เพิ่ม --noconsole เป็น option ดังนี้

py -m PyInstaller --noconsole <ไฟล์ script.py>





blog: jeasydev.blogspot.com
fbPage: https://www.facebook.com/jeasydev
youtube : https://www.youtube.com/banwitt

ครูชลิตา จูมสีมา(@jEasyDev)
ผู้เขียน

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

CASIO fx-5800P : การ mod ด้วยเครื่องคิดเลข

sgsBB(SGS-Score Inserter) : โปรแกรมช่วยกรอกผลคะแนนจาก bookmark51 ใส่ระบบ SGS ของ สพฐ.

springMVC : เชื่อมต่อฐานข้อมูล mySQL ด้วย JDBC-Template