13.11.09

py2exe แปลง python ให้เป็น exe file

จริงๆแล้ว py2exe เป็น module ทีแยกออกมาจาก Distribution Utilities “disutils”  (เพราะฉะนั้นจะไม่มีมากับ python ที่เรา install เข้าไป ต้อง download แยกมาต่างหาก) ซึ่งเจ้าตัว py2exe จะทำหน้าที่แปลงโค๊ดที่เราเขียนเป็นภาษา python ให้เป็นไฟล์ exe ซึ่งสามารถนำไปรันบนวินโดวน์เครื่องไหนๆก็ได้ตามที่ต้องการ โดยที่เครื่องนั้นๆ ไม่จำเป็นต้องลงตัวแปลภาษา python แต่อย่างใด

ก่อนจะพาไปสู่การติดตั้งและการใช้งาน py2exe ผมอยากจะเล่าเหตุผลที่ผมสนใจเจ้าตัว python ก็เพราะว่ามันสามารถทำงานได้เกือบจะครอบคลุมทั้งหมดเลยก็ว่าได้ เช่น มีอยู่ครั้งหนึ่งที่ผมพยายามที่จะเขียนหน้าเว็บด้วย PHP แล้วให้ user ทำการ คลิกนู่น คลิกนี่ บนหน้าเว็บแล้วให้มีการส่งคำสั่งไปยัง hardware ที่ต่ออยู่กับเครื่องคอมพิวเตอร์ ลำพังเพียง PHP อย่างเดียวไม่สามารถทำได้แน่นอน จะต้องใช้ PHP ไปเรียกโปรแกรมอื่นๆอีก อาจจะเป็นโปรแกรมที่เราเขียนด้วย Visual basic หรือไม่ก็เขียนด้วยภาษา C หรืออะไรก็ตามแต่ จะเห็นได้ว่า เพื่อนๆจะต้องศึกษา PHP แล้วก้ไปศึกษาโปรแกรมอื่นๆอีก นอกจากนี้ เพื่อนๆยังอาจจะพบปัญหาถึงความที่สองโปรแกรมเข้ากันไม่ได้อีก ก็เลยเป็นที่มาที่ผมอยากจะนำเสนอภาษา python ที่พร้อมสรรพสำหรับทุกเรื่อง มาว่ากันต่อ

อันดับแรกเลยของการใช้ py2exe ก็ให้เพื่อนๆไปดาวน์โหลดตัวโปรแกรมนี้มาก่อนจากที่นี่ โดยเราต้องเลือก version ที่มัน support ตรงกับ python ที่เราได้ติดตั้งไว้แล้วที่เครื่องของเรา เมื่อได้มาแล้ว ก็ทำการติดตั้งโปรแกรมตามสัญชาตญาณดั้งเดิม Nextๆๆๆๆ แล้วก็ Next lol หลังจากติดตั้งเรียบร้อยแล้ว อย่าลืมไป set path ด้วยนะครับ จะได้เรียกใช้ไฟล์ได้ง่ายๆ

C:\Python26\Lib\site-packages\py2exe

set parh py2exe

ในตัวอย่างนี้ ผมก็เอามาจากในเว็บ http://www.py2exe.org/index.cgi/Tutorial นั่นแหละ เป็นตัวอย่างง่ายๆ เพื่อให้เกิดความเข้าใจก่อน หลังจากนั้นก็ค่อยไปประยุกต์เอาเอง เริ่มจากการสร้งโค๊ด python ง่ายๆขึ้นมาก่อน

แล้ว save เป็น ไฟล์ hello.py ลองรันดูด้วยว่าได้ Hello World ออกมาไหม

 



C:\Tutorial>python hello.py
Hello World!

C:\Tutorial>



 


ก่อนที่จะไปขั้นตอนการแปลงไฟล์ python ให้เป็นไฟล์ exe เพื่อนๆจะต้องทำการสร้างไฟล์สำหรับติดตั้งก่อน โดยสร้างไฟล์ดังต่อไปนี้




from distutils.core import setup
import py2exe

setup(console=['hello.py'])



 


แล้ว save เป็นไฟล์ setup.py เอาไว้ที่เดียวกันกะไฟล์ที่บันทึกก่อนหน้านี้



ในขั้นตอนนี้ เราจะทำการ complie โค๊ดที่เราเขีนให้เป็น ไฟล์ exe เพื่อพร้อมไปใช้งาน โดยพิมพ์คำสั่งนี้ที่ command line (




C:\Tutorial>python setup.py py2exe



จะได้ ข้อความขึ้นมาเพียบเลย



C:\Tutorial>python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'zlib'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling C:\Tutorial\build\bdist.win32\winexe\temp\zlib.py to zlib.pyc
skipping byte-compilation of c:\Python24\lib\StringIO.py to StringIO.pyc

[skipping many lines for brevity]

skipping byte-compilation of c:\Python24\lib\warnings.py to warnings.pyc
*** copy extensions ***
*** copy dlls ***
copying c:\Python24\lib\site-packages\py2exe\run.exe -> C:\Tutorial\dist\hello.exe

*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.

Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.

ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll
USER32.dll - C:\WINDOWS\system32\USER32.dll
SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll
KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll

C:\Tutorial>


พอเข้าไปดูใน C:\Tutorial> จะมี folder เพิ่มขึ้นมา 2 folder คื build และ dist ซึ่ง folder build เราสามารถลบทิ้งได้หลังจากสร้าง package เสร็จเรียบร้อยได้เลย ลองทดสอบโปรแกรมที่ได้




C:\Tutorial>cd dist

C:\Tutorial\dist>hello.exe
Hello World



 


ก็พอได้แนวทางกันแล้วนะครับ ลองๆเล่นกันดูนะครับ วันหลังผมจะมาแนะนำการติดตั้งตัวเสริม python อีกตัวหนึ่งที่จะทำให้เพื่อนๆสามารถเขียน python แบบ GUI ได้สะดวกยิ่งขึ้น  วันนี้พอเท่านี้ก่อน เหนื่อยแล้ว สวัสดีครับ

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

krapalm on 9:19 am, November 14, 2009 said...

ช่วงนี้รอบตัวผม กำลัมีแต่คนบ้าไพธอนเลย ฮ่ะ

Unknown on 12:16 pm, May 01, 2013 said...

ติดปัญหาครับไม่เจอ msvcr90.dll

Post a Comment

 

เกี่ยวกับฉัน(ไหมเนี้ย)

รายการบล๊อกอื่นๆ

  • Gearset matching 2021 program - เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถ...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger