要使用py2exe,首先要編寫一個編譯指令碼,然後通過Python運行編譯指令碼即可將其他的指令碼編譯成可執行檔。以下執行個體是將要編譯成可執行檔的指令碼。
#file: MessageBox.py
import win32api
import win32con
win32api.MessageBox(0, 'hi!', 'Python', win32con.MB_OK)
以下執行個體是編譯指令碼。
#file: setup.py
import distutils
import py2exe
distutils.core.setup(windows=['MessageBox.py'])
在Windows的cmd視窗中輸入“setup.py py2exe”,將得到如下輸出:
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'win32api'
creating python loader for extension 'unicodedata'
creating python loader for extension 'bz2'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
************************************************************
部分輸出省略
************************************************************
byte-compiling E:\book\code\py2exe\build\bdist.
win32\winexe\temp\unicodedata.py
to unicodedata.pyc
byte-compiling E:\book\code\py2exe\build\bdist.
win32\winexe\temp\win32api.py to
win32api.pyc
*** copy extensions ***
*** copy dlls ***
copying D:\Python25\lib\site-packages\py2exe\run_w.exe ->
E:\book\code\py2exe\di
st\MessageBox.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.
OLEAUT32.dll - C:\WINDOWS\system32\OLEAUT32.dll
USER32.dll - C:\WINDOWS\system32\USER32.dll
SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll
ole32.dll - C:\WINDOWS\system32\ole32.dll
ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll
VERSION.dll - C:\WINDOWS\system32\VERSION.dll
KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll
運行完編譯指令碼以後會在當前檔案夾下產生dist和build兩個目錄。其中dist目錄中就是編譯產生的檔案。如果要在其他未安裝Python的機器上運行編譯好的程式,只要將dist目錄複寫到其他機器上即可。雙擊運行MessageBox.exe,10-4所示。
在setup.py中除了匯入必需的模組以外,只有一條語句。
distutils.core.setup(windows=['MessageBox.py'])
方括弧中就是要編譯的指令碼名,前邊的windows表示將其編譯成GUI程式。如果要編譯命令列介面的可執行檔,只要將windows改為console。重新編譯MessageBox.py後,雙擊運行,10-5所示。可以看到運行程式後多了一個命令列視窗。另外,如果需要將指令碼編譯成Windows服務,則可以使用service選項。
圖10-4 MessageBox.exe
註:此內容是從互連網上搜取轉載的!