如何將python指令碼生成exe
阿新 • • 發佈:2018-11-02
一、簡介py2exe是一個將python指令碼轉換成windows上的可獨立執行的可執行程式(*.exe)的工具,這樣,你就可以不用裝python而在windows系統上執行這個可執行程式。
py2exe已經被用於建立wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的獨立程式。py2exe是釋出在開源許可證下的。
二、安裝py2exe從http://prdownloads.sourceforge.net/py2exe下載並執行與你所安裝的Python對應的py2exe版本的installer,這將安裝py2exe和相應的例子;這些例子被安裝在lib\site-packages\py2exe\samples目錄下。
命令列方式執行setup.py,如下:
py2exe已經被用於建立wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的獨立程式。py2exe是釋出在開源許可證下的。
二、安裝py2exe從http://prdownloads.sourceforge.net/py2exe下載並執行與你所安裝的Python對應的py2exe版本的installer,這將安裝py2exe和相應的例子;這些例子被安裝在lib\site-packages\py2exe\samples目錄下。
三、py2exe的用法如果你有一個名為helloworld.py的python指令碼,你想把它轉換為執行在windows上的可執行程式,並執行在沒有安裝python的windows系統上,那麼首先你應寫一個用於釋出程式的設定指令碼例如mysetup.py,在其中的setup函式前插入語句import py2exe 。
在同一目錄存放兩個python檔案,一個是hello.py,一個是setup.py,前者是供測試的python檔案,後者是打包用的程式:
print "Hello World!"
from distutils.core import setup
import py2exe
setup(console=["hello.py"])
命令列方式執行setup.py,如下:
python setup.py py2exe
命令列顯示:
Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\Users\sean>e: E:\>cd python E:\python>python setup.py py2exe running py2exe creating E:\python\build creating E:\python\build\bdist.win32 creating E:\python\build\bdist.win32\winexe creating E:\python\build\bdist.win32\winexe\collect-2.7 creating E:\python\build\bdist.win32\winexe\bundle-2.7 creating E:\python\build\bdist.win32\winexe\temp creating E:\python\dist *** searching for required modules *** *** parsing results *** creating python loader for extension 'select' (C:\Python27\DLLs\select.pyd -> select.pyd) creating python loader for extension 'unicodedata' (C:\Python27\DLLs\unicodedata.pyd -> unicodedata.pyd) creating python loader for extension 'bz2' (C:\Python27\DLLs\bz2.pyd -> bz2.pyd) *** finding dlls needed *** *** create binaries *** *** byte compile python files *** byte-compiling C:\Python27\lib\StringIO.py to StringIO.pyc byte-compiling C:\Python27\lib\UserDict.py to UserDict.pyc byte-compiling C:\Python27\lib\__future__.py to __future__.pyc byte-compiling C:\Python27\lib\_abcoll.py to _abcoll.pyc byte-compiling C:\Python27\lib\_strptime.py to _strptime.pyc byte-compiling C:\Python27\lib\_threading_local.py to _threading_local.pyc byte-compiling C:\Python27\lib\_weakrefset.py to _weakrefset.pyc byte-compiling C:\Python27\lib\abc.py to abc.pyc byte-compiling C:\Python27\lib\atexit.py to atexit.pyc byte-compiling C:\Python27\lib\base64.py to base64.pyc byte-compiling C:\Python27\lib\bdb.py to bdb.pyc byte-compiling C:\Python27\lib\bisect.py to bisect.pyc byte-compiling C:\Python27\lib\calendar.py to calendar.pyc byte-compiling C:\Python27\lib\cmd.py to cmd.pyc byte-compiling C:\Python27\lib\codecs.py to codecs.pyc byte-compiling C:\Python27\lib\collections.py to collections.pyc byte-compiling C:\Python27\lib\copy.py to copy.pyc byte-compiling C:\Python27\lib\copy_reg.py to copy_reg.pyc byte-compiling C:\Python27\lib\difflib.py to difflib.pyc byte-compiling C:\Python27\lib\dis.py to dis.pyc byte-compiling C:\Python27\lib\doctest.py to doctest.pyc byte-compiling C:\Python27\lib\dummy_thread.py to dummy_thread.pyc byte-compiling C:\Python27\lib\encodings\__init__.py to encodings\__init__.pyc creating E:\python\build\bdist.win32\winexe\collect-2.7\encodings byte-compiling C:\Python27\lib\encodings\aliases.py to encodings\aliases.pyc byte-compiling C:\Python27\lib\encodings\ascii.py to encodings\ascii.pyc byte-compiling C:\Python27\lib\encodings\base64_codec.py to encodings\base64_codec.pyc byte-compiling C:\Python27\lib\encodings\big5.py to encodings\big5.pyc byte-compiling C:\Python27\lib\encodings\big5hkscs.py to encodings\big5hkscs.pyc byte-compiling C:\Python27\lib\encodings\bz2_codec.py to encodings\bz2_codec.pyc byte-compiling C:\Python27\lib\encodings\charmap.py to encodings\charmap.pyc byte-compiling C:\Python27\lib\encodings\cp037.py to encodings\cp037.pyc byte-compiling C:\Python27\lib\encodings\cp1006.py to encodings\cp1006.pyc byte-compiling C:\Python27\lib\encodings\cp1026.py to encodings\cp1026.pyc byte-compiling C:\Python27\lib\encodings\cp1140.py to encodings\cp1140.pyc byte-compiling C:\Python27\lib\encodings\cp1250.py to encodings\cp1250.pyc byte-compiling C:\Python27\lib\encodings\cp1251.py to encodings\cp1251.pyc byte-compiling C:\Python27\lib\encodings\cp1252.py to encodings\cp1252.pyc byte-compiling C:\Python27\lib\encodings\cp1253.py to encodings\cp1253.pyc byte-compiling C:\Python27\lib\encodings\cp1254.py to encodings\cp1254.pyc byte-compiling C:\Python27\lib\encodings\cp1255.py to encodings\cp1255.pyc byte-compiling C:\Python27\lib\encodings\cp1256.py to encodings\cp1256.pyc byte-compiling C:\Python27\lib\encodings\cp1257.py to encodings\cp1257.pyc byte-compiling C:\Python27\lib\encodings\cp1258.py to encodings\cp1258.pyc byte-compiling C:\Python27\lib\encodings\cp424.py to encodings\cp424.pyc byte-compiling C:\Python27\lib\encodings\cp437.py to encodings\cp437.pyc byte-compiling C:\Python27\lib\encodings\cp500.py to encodings\cp500.pyc byte-compiling C:\Python27\lib\encodings\cp720.py to encodings\cp720.pyc byte-compiling C:\Python27\lib\encodings\cp737.py to encodings\cp737.pyc byte-compiling C:\Python27\lib\encodings\cp775.py to encodings\cp775.pyc byte-compiling C:\Python27\lib\encodings\cp850.py to encodings\cp850.pyc byte-compiling C:\Python27\lib\encodings\cp852.py to encodings\cp852.pyc byte-compiling C:\Python27\lib\encodings\cp855.py to encodings\cp855.pyc byte-compiling C:\Python27\lib\encodings\cp856.py to encodings\cp856.pyc byte-compiling C:\Python27\lib\encodings\cp857.py to encodings\cp857.pyc byte-compiling C:\Python27\lib\encodings\cp858.py to encodings\cp858.pyc byte-compiling C:\Python27\lib\encodings\cp860.py to encodings\cp860.pyc byte-compiling C:\Python27\lib\encodings\cp861.py to encodings\cp861.pyc byte-compiling C:\Python27\lib\encodings\cp862.py to encodings\cp862.pyc byte-compiling C:\Python27\lib\encodings\cp863.py to encodings\cp863.pyc byte-compiling C:\Python27\lib\encodings\cp864.py to encodings\cp864.pyc byte-compiling C:\Python27\lib\encodings\cp865.py to encodings\cp865.pyc byte-compiling C:\Python27\lib\encodings\cp866.py to encodings\cp866.pyc byte-compiling C:\Python27\lib\encodings\cp869.py to encodings\cp869.pyc byte-compiling C:\Python27\lib\encodings\cp874.py to encodings\cp874.pyc byte-compiling C:\Python27\lib\encodings\cp875.py to encodings\cp875.pyc byte-compiling C:\Python27\lib\encodings\cp932.py to encodings\cp932.pyc byte-compiling C:\Python27\lib\encodings\cp949.py to encodings\cp949.pyc byte-compiling C:\Python27\lib\encodings\cp950.py to encodings\cp950.pyc byte-compiling C:\Python27\lib\encodings\euc_jis_2004.py to encodings\euc_jis_2004.pyc byte-compiling C:\Python27\lib\encodings\euc_jisx0213.py to encodings\euc_jisx0213.pyc byte-compiling C:\Python27\lib\encodings\euc_jp.py to encodings\euc_jp.pyc byte-compiling C:\Python27\lib\encodings\euc_kr.py to encodings\euc_kr.pyc byte-compiling C:\Python27\lib\encodings\gb18030.py to encodings\gb18030.pyc byte-compiling C:\Python27\lib\encodings\gb2312.py to encodings\gb2312.pyc byte-compiling C:\Python27\lib\encodings\gbk.py to encodings\gbk.pyc byte-compiling C:\Python27\lib\encodings\hex_codec.py to encodings\hex_codec.pyc byte-compiling C:\Python27\lib\encodings\hp_roman8.py to encodings\hp_roman8.pyc byte-compiling C:\Python27\lib\encodings\hz.py to encodings\hz.pyc byte-compiling C:\Python27\lib\encodings\idna.py to encodings\idna.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp.py to encodings\iso2022_jp.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp_1.py to encodings\iso2022_jp_1.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp_2.py to encodings\iso2022_jp_2.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp_2004.py to encodings\iso2022_jp_2004.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp_3.py to encodings\iso2022_jp_3.pyc byte-compiling C:\Python27\lib\encodings\iso2022_jp_ext.py to encodings\iso2022_jp_ext.pyc byte-compiling C:\Python27\lib\encodings\iso2022_kr.py to encodings\iso2022_kr.pyc byte-compiling C:\Python27\lib\encodings\iso8859_1.py to encodings\iso8859_1.pyc byte-compiling C:\Python27\lib\encodings\iso8859_10.py to encodings\iso8859_10.pyc byte-compiling C:\Python27\lib\encodings\iso8859_11.py to encodings\iso8859_11.pyc byte-compiling C:\Python27\lib\encodings\iso8859_13.py to encodings\iso8859_13.pyc byte-compiling C:\Python27\lib\encodings\iso8859_14.py to encodings\iso8859_14.pyc byte-compiling C:\Python27\lib\encodings\iso8859_15.py to encodings\iso8859_15.pyc byte-compiling C:\Python27\lib\encodings\iso8859_16.py to encodings\iso8859_16.pyc byte-compiling C:\Python27\lib\encodings\iso8859_2.py to encodings\iso8859_2.pyc byte-compiling C:\Python27\lib\encodings\iso8859_3.py to encodings\iso8859_3.pyc byte-compiling C:\Python27\lib\encodings\iso8859_4.py to encodings\iso8859_4.pyc byte-compiling C:\Python27\lib\encodings\iso8859_5.py to encodings\iso8859_5.pyc byte-compiling C:\Python27\lib\encodings\iso8859_6.py to encodings\iso8859_6.pyc byte-compiling C:\Python27\lib\encodings\iso8859_7.py to encodings\iso8859_7.pyc byte-compiling C:\Python27\lib\encodings\iso8859_8.py to encodings\iso8859_8.pyc byte-compiling C:\Python27\lib\encodings\iso8859_9.py to encodings\iso8859_9.pyc byte-compiling C:\Python27\lib\encodings\johab.py to encodings\johab.pyc byte-compiling C:\Python27\lib\encodings\koi8_r.py to encodings\koi8_r.pyc byte-compiling C:\Python27\lib\encodings\koi8_u.py to encodings\koi8_u.pyc byte-compiling C:\Python27\lib\encodings\latin_1.py to encodings\latin_1.pyc byte-compiling C:\Python27\lib\encodings\mac_arabic.py to encodings\mac_arabic.pyc byte-compiling C:\Python27\lib\encodings\mac_centeuro.py to encodings\mac_centeuro.pyc byte-compiling C:\Python27\lib\encodings\mac_croatian.py to encodings\mac_croatian.pyc byte-compiling C:\Python27\lib\encodings\mac_cyrillic.py to encodings\mac_cyrillic.pyc byte-compiling C:\Python27\lib\encodings\mac_farsi.py to encodings\mac_farsi.pyc byte-compiling C:\Python27\lib\encodings\mac_greek.py to encodings\mac_greek.pyc byte-compiling C:\Python27\lib\encodings\mac_iceland.py to encodings\mac_iceland.pyc byte-compiling C:\Python27\lib\encodings\mac_latin2.py to encodings\mac_latin2.pyc byte-compiling C:\Python27\lib\encodings\mac_roman.py to encodings\mac_roman.pyc byte-compiling C:\Python27\lib\encodings\mac_romanian.py to encodings\mac_romanian.pyc byte-compiling C:\Python27\lib\encodings\mac_turkish.py to encodings\mac_turkish.pyc byte-compiling C:\Python27\lib\encodings\mbcs.py to encodings\mbcs.pyc byte-compiling C:\Python27\lib\encodings\palmos.py to encodings\palmos.pyc byte-compiling C:\Python27\lib\encodings\ptcp154.py to encodings\ptcp154.pyc byte-compiling C:\Python27\lib\encodings\punycode.py to encodings\punycode.pyc byte-compiling C:\Python27\lib\encodings\quopri_codec.py to encodings\quopri_codec.pyc byte-compiling C:\Python27\lib\encodings\raw_unicode_escape.py to encodings\raw_unicode_escape.pyc byte-compiling C:\Python27\lib\encodings\rot_13.py to encodings\rot_13.pyc byte-compiling C:\Python27\lib\encodings\shift_jis.py to encodings\shift_jis.pyc byte-compiling C:\Python27\lib\encodings\shift_jis_2004.py to encodings\shift_jis_2004.pyc byte-compiling C:\Python27\lib\encodings\shift_jisx0213.py to encodings\shift_jisx0213.pyc byte-compiling C:\Python27\lib\encodings\string_escape.py to encodings\string_escape.pyc byte-compiling C:\Python27\lib\encodings\tis_620.py to encodings\tis_620.pyc byte-compiling C:\Python27\lib\encodings\undefined.py to encodings\undefined.pyc byte-compiling C:\Python27\lib\encodings\unicode_escape.py to encodings\unicode_escape.pyc byte-compiling C:\Python27\lib\encodings\unicode_internal.py to encodings\unicode_internal.pyc byte-compiling C:\Python27\lib\encodings\utf_16.py to encodings\utf_16.pyc byte-compiling C:\Python27\lib\encodings\utf_16_be.py to encodings\utf_16_be.pyc byte-compiling C:\Python27\lib\encodings\utf_16_le.py to encodings\utf_16_le.pyc byte-compiling C:\Python27\lib\encodings\utf_32.py to encodings\utf_32.pyc byte-compiling C:\Python27\lib\encodings\utf_32_be.py to encodings\utf_32_be.pyc byte-compiling C:\Python27\lib\encodings\utf_32_le.py to encodings\utf_32_le.pyc byte-compiling C:\Python27\lib\encodings\utf_7.py to encodings\utf_7.pyc byte-compiling C:\Python27\lib\encodings\utf_8.py to encodings\utf_8.pyc byte-compiling C:\Python27\lib\encodings\utf_8_sig.py to encodings\utf_8_sig.pyc byte-compiling C:\Python27\lib\encodings\uu_codec.py to encodings\uu_codec.pyc byte-compiling C:\Python27\lib\encodings\zlib_codec.py to encodings\zlib_codec.pyc byte-compiling C:\Python27\lib\fnmatch.py to fnmatch.pyc byte-compiling C:\Python27\lib\functools.py to functools.pyc byte-compiling C:\Python27\lib\genericpath.py to genericpath.pyc byte-compiling C:\Python27\lib\getopt.py to getopt.pyc byte-compiling C:\Python27\lib\gettext.py to gettext.pyc byte-compiling C:\Python27\lib\heapq.py to heapq.pyc byte-compiling C:\Python27\lib\inspect.py to inspect.pyc byte-compiling C:\Python27\lib\keyword.py to keyword.pyc byte-compiling C:\Python27\lib\linecache.py to linecache.pyc byte-compiling C:\Python27\lib\locale.py to locale.pyc byte-compiling C:\Python27\lib\ntpath.py to ntpath.pyc byte-compiling C:\Python27\lib\opcode.py to opcode.pyc byte-compiling C:\Python27\lib\optparse.py to optparse.pyc byte-compiling C:\Python27\lib\os.py to os.pyc byte-compiling C:\Python27\lib\os2emxpath.py to os2emxpath.pyc byte-compiling C:\Python27\lib\pdb.py to pdb.pyc byte-compiling C:\Python27\lib\pickle.py to pickle.pyc byte-compiling C:\Python27\lib\posixpath.py to posixpath.pyc byte-compiling C:\Python27\lib\pprint.py to pprint.pyc byte-compiling C:\Python27\lib\quopri.py to quopri.pyc byte-compiling C:\Python27\lib\random.py to random.pyc byte-compiling C:\Python27\lib\re.py to re.pyc byte-compiling C:\Python27\lib\repr.py to repr.pyc byte-compiling C:\Python27\lib\shlex.py to shlex.pyc byte-compiling C:\Python27\lib\sre.py to sre.pyc byte-compiling C:\Python27\lib\sre_compile.py to sre_compile.pyc byte-compiling C:\Python27\lib\sre_constants.py to sre_constants.pyc byte-compiling C:\Python27\lib\sre_parse.py to sre_parse.pyc byte-compiling C:\Python27\lib\stat.py to stat.pyc byte-compiling C:\Python27\lib\string.py to string.pyc byte-compiling C:\Python27\lib\stringprep.py to stringprep.pyc byte-compiling C:\Python27\lib\struct.py to struct.pyc byte-compiling C:\Python27\lib\subprocess.py to subprocess.pyc byte-compiling C:\Python27\lib\tempfile.py to tempfile.pyc byte-compiling C:\Python27\lib\textwrap.py to textwrap.pyc byte-compiling C:\Python27\lib\threading.py to threading.pyc byte-compiling C:\Python27\lib\token.py to token.pyc byte-compiling C:\Python27\lib\tokenize.py to tokenize.pyc byte-compiling C:\Python27\lib\traceback.py to traceback.pyc byte-compiling C:\Python27\lib\types.py to types.pyc byte-compiling C:\Python27\lib\unittest\__init__.py to unittest\__init__.pyc creating E:\python\build\bdist.win32\winexe\collect-2.7\unittest byte-compiling C:\Python27\lib\unittest\case.py to unittest\case.pyc byte-compiling C:\Python27\lib\unittest\loader.py to unittest\loader.pyc byte-compiling C:\Python27\lib\unittest\main.py to unittest\main.pyc byte-compiling C:\Python27\lib\unittest\result.py to unittest\result.pyc byte-compiling C:\Python27\lib\unittest\runner.py to unittest\runner.pyc byte-compiling C:\Python27\lib\unittest\signals.py to unittest\signals.pyc byte-compiling C:\Python27\lib\unittest\suite.py to unittest\suite.pyc byte-compiling C:\Python27\lib\unittest\util.py to unittest\util.pyc byte-compiling C:\Python27\lib\warnings.py to warnings.pyc byte-compiling C:\Python27\lib\weakref.py to weakref.pyc byte-compiling E:\python\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc byte-compiling E:\python\build\bdist.win32\winexe\temp\select.py to select.pyc byte-compiling E:\python\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc *** copy extensions *** copying C:\Python27\DLLs\bz2.pyd -> E:\python\dist copying C:\Python27\DLLs\select.pyd -> E:\python\dist copying C:\Python27\DLLs\unicodedata.pyd -> E:\python\dist *** copy dlls *** copying C:\Python27\w9xpopen.exe -> E:\python\dist copying C:\Windows\system32\python27.dll -> E:\python\dist setting sys.winver for 'E:\python\dist\python27.dll' to 'py2exe' copying C:\Python27\lib\site-packages\py2exe\run.exe -> E:\python\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. WSOCK32.dll - C:\Windows\system32\WSOCK32.dll USER32.dll - C:\Windows\system32\USER32.dll ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll SHELL32.dll - C:\Windows\system32\SHELL32.dll KERNEL32.dll - C:\Windows\system32\KERNEL32.dll E:\python>
此時在同目錄下有兩個資料夾,其中可執行檔案就在其中:
Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。 C:\Users\sean>e: E:\>cd python E:\python>dir 驅動器 E 中的卷是 新加捲 卷的序列號是 B695-87CE E:\python 的目錄 2017/06/21 18:12 <DIR> . 2017/06/21 18:12 <DIR> .. 2017/06/21 18:12 <DIR> build 2017/06/21 18:14 <DIR> dist 2017/06/21 18:07 20 hello.py 2017/06/21 18:08 78 setup.py 2 個檔案 98 位元組 4 個目錄 104,372,019,200 可用位元組 E:\python>cd dist E:\python\dist>dir 驅動器 E 中的卷是 新加捲 卷的序列號是 B695-87CE E:\python\dist 的目錄 2017/06/21 18:14 <DIR> . 2017/06/21 18:14 <DIR> .. 2010/07/04 09:03 71,680 bz2.pyd 2017/06/21 18:12 18,944 hello.exe 2017/06/21 18:12 1,506,260 library.zip 2010/07/04 09:03 2,286,080 python27.dll 2010/07/04 09:04 11,776 select.pyd 2010/07/04 09:03 688,128 unicodedata.pyd 2010/07/04 09:01 49,664 w9xpopen.exe 7 個檔案 4,632,532 位元組 2 個目錄 104,372,019,200 可用位元組 E:\python\dist>hello.exe Hello World! E:\python\dist>