จริงๆแล้ว 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
ในตัวอย่างนี้ ผมก็เอามาจากในเว็บ 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 ความคิดเห็น:
ช่วงนี้รอบตัวผม กำลัมีแต่คนบ้าไพธอนเลย ฮ่ะ
ติดปัญหาครับไม่เจอ msvcr90.dll
Post a Comment