23 สิงหาคม 2557

Published สิงหาคม 23, 2557 by with 0 comment

Compile python 3 ให้เป็น exe

สวัสดีทุกท่านครับ บางท่านที่เขียนด้วย Python แล้วต้องการนำโปรแกรมที่เขียนไปเปิดกับเครื่องอื่น แต่เครื่องอื่นนั้นไม่ได้ติดตั้ง Python ไว้ ทำให้ไม่สามารถรันโปรแกรมได้ บทความนี้เราจะมา Compile python 3 ให้เป็น exe ด้วย cx_Freeze กันครับ
   EXE คือ ไฟล์ Binary ในระบบปฎิบัติการ Windows ที่ใช้งานกันส่วนใหญ่ ซึ่งได้แปลงโปรแกรมมาอยู่ในรูปภาษาเครื่องแล้วครับ
  ใน Python 3 ผมได้ตรวจสอบแล้วพบว่า PyInstaller และอื่น ๆ ยังไม่รองรับ Python 3 อย่างสมบูรณ์ครับ ผมขอแนะนำโมดูล cx_Freeze ครับ เป็นโมดูลที่รองรับการ Compile python 3 ให้เป็น exe ครับ
โมดูล cx_Freeze สามารถโหลดและติดตั้งได้ที่ https://pypi.python.org/pypi/cx_Freeze ครับ เลือกให้ตรงกับเวชั่นนะครับ เช่น ผมใช้ Python 3.4 32 Bit ผมก็เลือก cx_Freeze-4.3.3.win32-py3.4.exe ครับ
  เมื่อติดตั้งเสร็จแล้วเรามาลอง Compile python 3 ให้เป็น exe กันเลยครับ ผมได้เขียนโปรแกรมบวกลบแบบง่าย ๆ โดยมีโค้ดดังนี้ครับ
#!/usr/bin/python
#-*-coding: utf-8 -*-
print (" + or -")
print ("1.+  2. -")
x = int(input("input: "))

if x == 1:
    a = int(input(" input 1: "))
    b = int(input("input 2: "))
    print ("=" , a + b)
elif x == 2:
    c = int(input("input 1: "))
    d = int(input("input 2: "))
    print ("=" , c - d)
elif x < 1 or x > 2:
    print ("No!")

input("enter to exit")
เสร็จแล้วผมบันทึกเป็น 1.py ต่อมาเราต้องสร้างไฟล์ setup.py ด้วยครับ เป็นไฟล์สำคัญในการ Compile บอกรายละอียดให้โมดูล cx_Freeze ว่าต้องมีการรวมโมดูลใดเข้ามาบ้าง ไฟล์ที่ต้องการ Compile เป็นต้นครับ
โค้ดตัวอย่างไฟล์  setup.py
import sys
from cx_Freeze import setup, Executable

executables = [
    Executable("1.py",
               icon="logo.ico",
               appendScriptToExe=True,
               appendScriptToLibrary=False,
               )
]

buildOptions = dict(create_shared_zip=False)

setup(name="Test",
      version="0.1",
      description="Hello, world",
      options=dict(build_exe=buildOptions),
      executables=executables,
      )

แล้วผมก็เปิด cmd ใช้ cd ไปยังโฟลเดอร์ที่เก็บแล้วผมก็สั่ง
python setup.py build 
เสร็จแล้วจะได้โฟลเดอร์ build ขึ้นมา เข้าไปจะพบกับโฟลเดอร์ exe.winXX-Y.Y
XX คือ Bit ของ Python Y.Y คือรุ่นของ Python ครับ ของผมเป็น exe.win32-3.4 พอคลิกเข้าไปจะพบกับ ครับ เมื่อผมคลิกที่ 1.exe จะพบว่าโปรแกรมได้ถูก Compile ให้เป็น exe แล้วครับ
โหลดโค้ดตัวอย่างโปรแกรมที่ผ่านการ  Compile ได้ที่ https://db.tt/kmIfSNPn
หรือถ้าต้องการสร้างไฟล์ติดตั้ง msi ด้วยให้ใช้คำสั่ง
python setup.py bdist_msi
ครับ จะได้โฟลเดอร์ dist ขึ้นมาข้างในจะมีไฟล์ Test-0.1-win32.msi ครับ

ติดตามบทความต่อไปครับ :)
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)