Skip to main content
Programming LanguagePython

แปลงไฟล์ Python เป็น EXE ง่ายๆ

Developer Team
BorntoDev Co., Ltd.

EXE คืออะไร ? 

EXE ย่อมาจาก Executable ซึ่งเป็นประเภทไฟล์มาตรฐานใน Windows โปรแกรมที่เราใช้งานกันโดยทั่วๆไปถ้าไปดูในโฟลเดอร์ที่ติดตั้งโปรแกรมเอาไว้ โปรแกรมต่างๆที่เราเปิดด้วยการดับเบิ้ลคลิกนั้นส่วนใหญ่จะมี .exe ต่อท้ายนั่นเอง (แต่ที่เราใช้กันจริงๆจะใช้ผ่าน Shortcut ที่ชี้เรียก .exe ให้เราอีกที)

Microsoft Edge Shortcut

ไฟล์ EXE มันดียังไง ?

สมมติว่าเราเขียนโปรแกรมด้วยภาษา Python ที่มีนามสกุลไฟล์เป็น .py เวลาที่เราจะใช้งานก็ต้องรันคำสั่งเพื่อเรียกใช้งาน อย่างเช่นเรามีโค้ดโปรแกรมเครื่องคิดเลข (โค้ดจาก https://www.geeksforgeeks.org/python-simple-gui-calculator-using-tkinter/

# Python program to create a simple GUI 
# calculator using Tkinter 

# import everything from tkinter module 
from tkinter import *

# globally declare the expression variable 
expression = "" 


# Function to update expressiom 
# in the text entry box 
def press(num): 
    # point out the global expression variable 
    global expression 

    # concatenation of string 
    expression = expression + str(num) 

    # update the expression by using set method 
    equation.set(expression) 


# Function to evaluate the final expression 
def equalpress(): 
    # Try and except statement is used 
    # for handling the errors like zero 
    # division error etc. 

    # Put that code inside the try block 
    # which may generate the error 
    try: 

        global expression 

        # eval function evaluate the expression 
        # and str function convert the result 
        # into string 
        total = str(eval(expression)) 

        equation.set(total) 

        # initialze the expression variable 
        # by empty string 
        expression = "" 

    # if error is generate then handle 
    # by the except block 
    except: 

        equation.set(" error ") 
        expression = "" 


# Function to clear the contents 
# of text entry box 
def clear(): 
    global expression 
    expression = "" 
    equation.set("") 


# Driver code 
if __name__ == "__main__": 
    # create a GUI window 
    gui = Tk() 

    # set the background colour of GUI window 
    gui.configure(background="light green") 

    # set the title of GUI window 
    gui.title("Simple Calculator") 

    # set the configuration of GUI window 
    gui.geometry("270x150") 

    # StringVar() is the variable class 
    # we create an instance of this class 
    equation = StringVar() 

    # create the text entry box for 
    # showing the expression . 
    expression_field = Entry(gui, textvariable=equation) 

    # grid method is used for placing 
    # the widgets at respective positions 
    # in table like structure . 
    expression_field.grid(columnspan=4, ipadx=70) 

    equation.set('enter your expression') 

    # create a Buttons and place at a particular 
    # location inside the root window . 
    # when user press the button, the command or 
    # function affiliated to that button is executed . 
    button1 = Button(gui, text=' 1 ', fg='black', bg='red', 
                    command=lambda: press(1), height=1, width=7) 
    button1.grid(row=2, column=0) 

    button2 = Button(gui, text=' 2 ', fg='black', bg='red', 
                    command=lambda: press(2), height=1, width=7) 
    button2.grid(row=2, column=1) 

    button3 = Button(gui, text=' 3 ', fg='black', bg='red', 
                    command=lambda: press(3), height=1, width=7) 
    button3.grid(row=2, column=2) 

    button4 = Button(gui, text=' 4 ', fg='black', bg='red', 
                    command=lambda: press(4), height=1, width=7) 
    button4.grid(row=3, column=0) 

    button5 = Button(gui, text=' 5 ', fg='black', bg='red', 
                    command=lambda: press(5), height=1, width=7) 
    button5.grid(row=3, column=1) 

    button6 = Button(gui, text=' 6 ', fg='black', bg='red', 
                    command=lambda: press(6), height=1, width=7) 
    button6.grid(row=3, column=2) 

    button7 = Button(gui, text=' 7 ', fg='black', bg='red', 
                    command=lambda: press(7), height=1, width=7) 
    button7.grid(row=4, column=0) 

    button8 = Button(gui, text=' 8 ', fg='black', bg='red', 
                    command=lambda: press(8), height=1, width=7) 
    button8.grid(row=4, column=1) 

    button9 = Button(gui, text=' 9 ', fg='black', bg='red', 
                    command=lambda: press(9), height=1, width=7) 
    button9.grid(row=4, column=2) 

    button0 = Button(gui, text=' 0 ', fg='black', bg='red', 
                    command=lambda: press(0), height=1, width=7) 
    button0.grid(row=5, column=0) 

    plus = Button(gui, text=' + ', fg='black', bg='red', 
                command=lambda: press("+"), height=1, width=7) 
    plus.grid(row=2, column=3) 

    minus = Button(gui, text=' - ', fg='black', bg='red', 
                command=lambda: press("-"), height=1, width=7) 
    minus.grid(row=3, column=3) 

    multiply = Button(gui, text=' * ', fg='black', bg='red', 
                    command=lambda: press("*"), height=1, width=7) 
    multiply.grid(row=4, column=3) 

    divide = Button(gui, text=' / ', fg='black', bg='red', 
                    command=lambda: press("/"), height=1, width=7) 
    divide.grid(row=5, column=3) 

    equal = Button(gui, text=' = ', fg='black', bg='red', 
                command=equalpress, height=1, width=7) 
    equal.grid(row=5, column=2) 

    clear = Button(gui, text='Clear', fg='black', bg='red', 
                command=clear, height=1, width=7) 
    clear.grid(row=5, column='1') 

    Decimal= Button(gui, text='.', fg='black', bg='red', 
                    command=lambda: press('.'), height=1, width=7) 
    Decimal.grid(row=6, column=0) 
    # start the GUI 
    gui.mainloop()

เซฟไว้ในไฟล์ชื่อ main.py ถ้าเราจะใช้งานอย่างเช่นใน Windows 10 ก็เปิด PowerShell แล้วไปที่ที่ไฟล์ main.py ของเราอยู่แล้วสั่งรันด้วยคำสั่ง

python main.py

ซึ่งมันไม่ง่ายเหมือนการเปิดโปรแกรมทั่วๆไป อย่างการเปิดเบราเซอร์ที่เราก็แค่ดับเบิลคลิกที่ไอคอนหรือไฟล์ .exe ของโปรแกรม ก็สามารถใช้งานได้ทันที อีกเรื่องที่ทำให้ไฟล์ .py ใช้งานไม่สะดวกก็คือ ไม่ใช่ว่าทุกๆคนจะติดตั้ง python ไว้ในเครื่อง ถ้าเราต้องการเอาโปรแกรมของเราให้คนอื่นใช้งานได้ด้วยการทำเป็นไฟล์ .exe ก็เป็นวิธีที่ง่ายและเหมาะสมในการส่งต่อโปรแกรมให้คนอื่นใช้งาน

แปลง .py ให้กลายเป็น .exe

เครื่องมือที่เราจะใช้กันก็คือ library ที่ชื่อว่า pyinstaller ซึ่งสามารถสร้างไฟล์ .exe ให้เราได้ด้วยคำสั่งบรรทัดเดียว ลองทำโปรแกรม Hello World ของเราให้เป็น .exe กันเลย

  1. ติดตั้ง pyinstaller ด้วยคำสั่ง

    pip install pyinstaller
  2. เปิด PowerShell ไปที่ที่ไฟล์ main.py ของเราอยู่ ถ้าขี้เกียจพิมพ์ cd เพื่อไปที่ path นั้น ก็เปิด File Explorer ไปที่ไฟล์ของเราแล้ว กด shift ค้างไว้ แล้วคลิกขวาเลือกเมนู Open PowerShell hereopen powershell here
  3. พิมพ์คำสั่ง

    pyinstaller --onefile --noconsole main.py

    แล้วกด Enter
    –onefile ทำให้ทุกอย่างรวมอยู่ในไฟล์ .exe เพียงไฟล์เดียว
    –noconsole ทำให้เปิดโปรแกรมโดยที่ไม่แสดง console
    run pyinstaller

  4. รอโปรแกรมรันสักพักจนขึ้นว่า completed successfully.
    pyinstaller complete

  5. ก็จะเห็นว่ามีโฟล์เดอร์โผล่มาข้างๆไฟล์ main.py ของเรา
    pyinstaller build files

  6. ไฟล์ exe ของเราจะอยู่ในโฟลเดอร์ dist ชื่อไฟล์ว่า main.exe ลองดับเบิลคลิกดูก็จะเปิดโปรแกรมเครื่องคิดเลขของเราขึ้นมาได้แล้ว ซึ่งถ้าจะเอาโปรแกรมไปใช้ที่อื่นก็แค่ก็อปปี้ไฟล์นี้ไปก็พอ
    exe program

สำหรับ pyinstaller เราสามารถตั้งค่ารายละเอียดในการสร้างไฟล์ exe ออกมาได้ อย่างด้านบนที่ใช้ไปก็คือ –onefile และ –noconsole ซึ่งยังมีคำสั่งให้เอาไปปรับใช้ให้เหมาะกับโปรแกรมแต่ละตัวได้อีกเยอะ ลองไปอ่านเพิ่มเติมได้ที่ https://www.pyinstaller.org/

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

Developer

Author Developer

More posts by Developer

Leave a Reply

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า