如何将python脚本生成exe

来源:互联网 发布:南风知我意2七微 编辑:程序博客网 时间:2024/06/05 04:41
一、简介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目录下。

三、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 pythonE:\python>python setup.py py2exerunning py2execreating E:\python\buildcreating E:\python\build\bdist.win32creating E:\python\build\bdist.win32\winexecreating E:\python\build\bdist.win32\winexe\collect-2.7creating E:\python\build\bdist.win32\winexe\bundle-2.7creating E:\python\build\bdist.win32\winexe\tempcreating 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.pycbyte-compiling C:\Python27\lib\UserDict.py to UserDict.pycbyte-compiling C:\Python27\lib\__future__.py to __future__.pycbyte-compiling C:\Python27\lib\_abcoll.py to _abcoll.pycbyte-compiling C:\Python27\lib\_strptime.py to _strptime.pycbyte-compiling C:\Python27\lib\_threading_local.py to _threading_local.pycbyte-compiling C:\Python27\lib\_weakrefset.py to _weakrefset.pycbyte-compiling C:\Python27\lib\abc.py to abc.pycbyte-compiling C:\Python27\lib\atexit.py to atexit.pycbyte-compiling C:\Python27\lib\base64.py to base64.pycbyte-compiling C:\Python27\lib\bdb.py to bdb.pycbyte-compiling C:\Python27\lib\bisect.py to bisect.pycbyte-compiling C:\Python27\lib\calendar.py to calendar.pycbyte-compiling C:\Python27\lib\cmd.py to cmd.pycbyte-compiling C:\Python27\lib\codecs.py to codecs.pycbyte-compiling C:\Python27\lib\collections.py to collections.pycbyte-compiling C:\Python27\lib\copy.py to copy.pycbyte-compiling C:\Python27\lib\copy_reg.py to copy_reg.pycbyte-compiling C:\Python27\lib\difflib.py to difflib.pycbyte-compiling C:\Python27\lib\dis.py to dis.pycbyte-compiling C:\Python27\lib\doctest.py to doctest.pycbyte-compiling C:\Python27\lib\dummy_thread.py to dummy_thread.pycbyte-compiling C:\Python27\lib\encodings\__init__.py to encodings\__init__.pyccreating E:\python\build\bdist.win32\winexe\collect-2.7\encodingsbyte-compiling C:\Python27\lib\encodings\aliases.py to encodings\aliases.pycbyte-compiling C:\Python27\lib\encodings\ascii.py to encodings\ascii.pycbyte-compiling C:\Python27\lib\encodings\base64_codec.py to encodings\base64_codec.pycbyte-compiling C:\Python27\lib\encodings\big5.py to encodings\big5.pycbyte-compiling C:\Python27\lib\encodings\big5hkscs.py to encodings\big5hkscs.pycbyte-compiling C:\Python27\lib\encodings\bz2_codec.py to encodings\bz2_codec.pycbyte-compiling C:\Python27\lib\encodings\charmap.py to encodings\charmap.pycbyte-compiling C:\Python27\lib\encodings\cp037.py to encodings\cp037.pycbyte-compiling C:\Python27\lib\encodings\cp1006.py to encodings\cp1006.pycbyte-compiling C:\Python27\lib\encodings\cp1026.py to encodings\cp1026.pycbyte-compiling C:\Python27\lib\encodings\cp1140.py to encodings\cp1140.pycbyte-compiling C:\Python27\lib\encodings\cp1250.py to encodings\cp1250.pycbyte-compiling C:\Python27\lib\encodings\cp1251.py to encodings\cp1251.pycbyte-compiling C:\Python27\lib\encodings\cp1252.py to encodings\cp1252.pycbyte-compiling C:\Python27\lib\encodings\cp1253.py to encodings\cp1253.pycbyte-compiling C:\Python27\lib\encodings\cp1254.py to encodings\cp1254.pycbyte-compiling C:\Python27\lib\encodings\cp1255.py to encodings\cp1255.pycbyte-compiling C:\Python27\lib\encodings\cp1256.py to encodings\cp1256.pycbyte-compiling C:\Python27\lib\encodings\cp1257.py to encodings\cp1257.pycbyte-compiling C:\Python27\lib\encodings\cp1258.py to encodings\cp1258.pycbyte-compiling C:\Python27\lib\encodings\cp424.py to encodings\cp424.pycbyte-compiling C:\Python27\lib\encodings\cp437.py to encodings\cp437.pycbyte-compiling C:\Python27\lib\encodings\cp500.py to encodings\cp500.pycbyte-compiling C:\Python27\lib\encodings\cp720.py to encodings\cp720.pycbyte-compiling C:\Python27\lib\encodings\cp737.py to encodings\cp737.pycbyte-compiling C:\Python27\lib\encodings\cp775.py to encodings\cp775.pycbyte-compiling C:\Python27\lib\encodings\cp850.py to encodings\cp850.pycbyte-compiling C:\Python27\lib\encodings\cp852.py to encodings\cp852.pycbyte-compiling C:\Python27\lib\encodings\cp855.py to encodings\cp855.pycbyte-compiling C:\Python27\lib\encodings\cp856.py to encodings\cp856.pycbyte-compiling C:\Python27\lib\encodings\cp857.py to encodings\cp857.pycbyte-compiling C:\Python27\lib\encodings\cp858.py to encodings\cp858.pycbyte-compiling C:\Python27\lib\encodings\cp860.py to encodings\cp860.pycbyte-compiling C:\Python27\lib\encodings\cp861.py to encodings\cp861.pycbyte-compiling C:\Python27\lib\encodings\cp862.py to encodings\cp862.pycbyte-compiling C:\Python27\lib\encodings\cp863.py to encodings\cp863.pycbyte-compiling C:\Python27\lib\encodings\cp864.py to encodings\cp864.pycbyte-compiling C:\Python27\lib\encodings\cp865.py to encodings\cp865.pycbyte-compiling C:\Python27\lib\encodings\cp866.py to encodings\cp866.pycbyte-compiling C:\Python27\lib\encodings\cp869.py to encodings\cp869.pycbyte-compiling C:\Python27\lib\encodings\cp874.py to encodings\cp874.pycbyte-compiling C:\Python27\lib\encodings\cp875.py to encodings\cp875.pycbyte-compiling C:\Python27\lib\encodings\cp932.py to encodings\cp932.pycbyte-compiling C:\Python27\lib\encodings\cp949.py to encodings\cp949.pycbyte-compiling C:\Python27\lib\encodings\cp950.py to encodings\cp950.pycbyte-compiling C:\Python27\lib\encodings\euc_jis_2004.py to encodings\euc_jis_2004.pycbyte-compiling C:\Python27\lib\encodings\euc_jisx0213.py to encodings\euc_jisx0213.pycbyte-compiling C:\Python27\lib\encodings\euc_jp.py to encodings\euc_jp.pycbyte-compiling C:\Python27\lib\encodings\euc_kr.py to encodings\euc_kr.pycbyte-compiling C:\Python27\lib\encodings\gb18030.py to encodings\gb18030.pycbyte-compiling C:\Python27\lib\encodings\gb2312.py to encodings\gb2312.pycbyte-compiling C:\Python27\lib\encodings\gbk.py to encodings\gbk.pycbyte-compiling C:\Python27\lib\encodings\hex_codec.py to encodings\hex_codec.pycbyte-compiling C:\Python27\lib\encodings\hp_roman8.py to encodings\hp_roman8.pycbyte-compiling C:\Python27\lib\encodings\hz.py to encodings\hz.pycbyte-compiling C:\Python27\lib\encodings\idna.py to encodings\idna.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp.py to encodings\iso2022_jp.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp_1.py to encodings\iso2022_jp_1.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp_2.py to encodings\iso2022_jp_2.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp_2004.py to encodings\iso2022_jp_2004.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp_3.py to encodings\iso2022_jp_3.pycbyte-compiling C:\Python27\lib\encodings\iso2022_jp_ext.py to encodings\iso2022_jp_ext.pycbyte-compiling C:\Python27\lib\encodings\iso2022_kr.py to encodings\iso2022_kr.pycbyte-compiling C:\Python27\lib\encodings\iso8859_1.py to encodings\iso8859_1.pycbyte-compiling C:\Python27\lib\encodings\iso8859_10.py to encodings\iso8859_10.pycbyte-compiling C:\Python27\lib\encodings\iso8859_11.py to encodings\iso8859_11.pycbyte-compiling C:\Python27\lib\encodings\iso8859_13.py to encodings\iso8859_13.pycbyte-compiling C:\Python27\lib\encodings\iso8859_14.py to encodings\iso8859_14.pycbyte-compiling C:\Python27\lib\encodings\iso8859_15.py to encodings\iso8859_15.pycbyte-compiling C:\Python27\lib\encodings\iso8859_16.py to encodings\iso8859_16.pycbyte-compiling C:\Python27\lib\encodings\iso8859_2.py to encodings\iso8859_2.pycbyte-compiling C:\Python27\lib\encodings\iso8859_3.py to encodings\iso8859_3.pycbyte-compiling C:\Python27\lib\encodings\iso8859_4.py to encodings\iso8859_4.pycbyte-compiling C:\Python27\lib\encodings\iso8859_5.py to encodings\iso8859_5.pycbyte-compiling C:\Python27\lib\encodings\iso8859_6.py to encodings\iso8859_6.pycbyte-compiling C:\Python27\lib\encodings\iso8859_7.py to encodings\iso8859_7.pycbyte-compiling C:\Python27\lib\encodings\iso8859_8.py to encodings\iso8859_8.pycbyte-compiling C:\Python27\lib\encodings\iso8859_9.py to encodings\iso8859_9.pycbyte-compiling C:\Python27\lib\encodings\johab.py to encodings\johab.pycbyte-compiling C:\Python27\lib\encodings\koi8_r.py to encodings\koi8_r.pycbyte-compiling C:\Python27\lib\encodings\koi8_u.py to encodings\koi8_u.pycbyte-compiling C:\Python27\lib\encodings\latin_1.py to encodings\latin_1.pycbyte-compiling C:\Python27\lib\encodings\mac_arabic.py to encodings\mac_arabic.pycbyte-compiling C:\Python27\lib\encodings\mac_centeuro.py to encodings\mac_centeuro.pycbyte-compiling C:\Python27\lib\encodings\mac_croatian.py to encodings\mac_croatian.pycbyte-compiling C:\Python27\lib\encodings\mac_cyrillic.py to encodings\mac_cyrillic.pycbyte-compiling C:\Python27\lib\encodings\mac_farsi.py to encodings\mac_farsi.pycbyte-compiling C:\Python27\lib\encodings\mac_greek.py to encodings\mac_greek.pycbyte-compiling C:\Python27\lib\encodings\mac_iceland.py to encodings\mac_iceland.pycbyte-compiling C:\Python27\lib\encodings\mac_latin2.py to encodings\mac_latin2.pycbyte-compiling C:\Python27\lib\encodings\mac_roman.py to encodings\mac_roman.pycbyte-compiling C:\Python27\lib\encodings\mac_romanian.py to encodings\mac_romanian.pycbyte-compiling C:\Python27\lib\encodings\mac_turkish.py to encodings\mac_turkish.pycbyte-compiling C:\Python27\lib\encodings\mbcs.py to encodings\mbcs.pycbyte-compiling C:\Python27\lib\encodings\palmos.py to encodings\palmos.pycbyte-compiling C:\Python27\lib\encodings\ptcp154.py to encodings\ptcp154.pycbyte-compiling C:\Python27\lib\encodings\punycode.py to encodings\punycode.pycbyte-compiling C:\Python27\lib\encodings\quopri_codec.py to encodings\quopri_codec.pycbyte-compiling C:\Python27\lib\encodings\raw_unicode_escape.py to encodings\raw_unicode_escape.pycbyte-compiling C:\Python27\lib\encodings\rot_13.py to encodings\rot_13.pycbyte-compiling C:\Python27\lib\encodings\shift_jis.py to encodings\shift_jis.pycbyte-compiling C:\Python27\lib\encodings\shift_jis_2004.py to encodings\shift_jis_2004.pycbyte-compiling C:\Python27\lib\encodings\shift_jisx0213.py to encodings\shift_jisx0213.pycbyte-compiling C:\Python27\lib\encodings\string_escape.py to encodings\string_escape.pycbyte-compiling C:\Python27\lib\encodings\tis_620.py to encodings\tis_620.pycbyte-compiling C:\Python27\lib\encodings\undefined.py to encodings\undefined.pycbyte-compiling C:\Python27\lib\encodings\unicode_escape.py to encodings\unicode_escape.pycbyte-compiling C:\Python27\lib\encodings\unicode_internal.py to encodings\unicode_internal.pycbyte-compiling C:\Python27\lib\encodings\utf_16.py to encodings\utf_16.pycbyte-compiling C:\Python27\lib\encodings\utf_16_be.py to encodings\utf_16_be.pycbyte-compiling C:\Python27\lib\encodings\utf_16_le.py to encodings\utf_16_le.pycbyte-compiling C:\Python27\lib\encodings\utf_32.py to encodings\utf_32.pycbyte-compiling C:\Python27\lib\encodings\utf_32_be.py to encodings\utf_32_be.pycbyte-compiling C:\Python27\lib\encodings\utf_32_le.py to encodings\utf_32_le.pycbyte-compiling C:\Python27\lib\encodings\utf_7.py to encodings\utf_7.pycbyte-compiling C:\Python27\lib\encodings\utf_8.py to encodings\utf_8.pycbyte-compiling C:\Python27\lib\encodings\utf_8_sig.py to encodings\utf_8_sig.pycbyte-compiling C:\Python27\lib\encodings\uu_codec.py to encodings\uu_codec.pycbyte-compiling C:\Python27\lib\encodings\zlib_codec.py to encodings\zlib_codec.pycbyte-compiling C:\Python27\lib\fnmatch.py to fnmatch.pycbyte-compiling C:\Python27\lib\functools.py to functools.pycbyte-compiling C:\Python27\lib\genericpath.py to genericpath.pycbyte-compiling C:\Python27\lib\getopt.py to getopt.pycbyte-compiling C:\Python27\lib\gettext.py to gettext.pycbyte-compiling C:\Python27\lib\heapq.py to heapq.pycbyte-compiling C:\Python27\lib\inspect.py to inspect.pycbyte-compiling C:\Python27\lib\keyword.py to keyword.pycbyte-compiling C:\Python27\lib\linecache.py to linecache.pycbyte-compiling C:\Python27\lib\locale.py to locale.pycbyte-compiling C:\Python27\lib\ntpath.py to ntpath.pycbyte-compiling C:\Python27\lib\opcode.py to opcode.pycbyte-compiling C:\Python27\lib\optparse.py to optparse.pycbyte-compiling C:\Python27\lib\os.py to os.pycbyte-compiling C:\Python27\lib\os2emxpath.py to os2emxpath.pycbyte-compiling C:\Python27\lib\pdb.py to pdb.pycbyte-compiling C:\Python27\lib\pickle.py to pickle.pycbyte-compiling C:\Python27\lib\posixpath.py to posixpath.pycbyte-compiling C:\Python27\lib\pprint.py to pprint.pycbyte-compiling C:\Python27\lib\quopri.py to quopri.pycbyte-compiling C:\Python27\lib\random.py to random.pycbyte-compiling C:\Python27\lib\re.py to re.pycbyte-compiling C:\Python27\lib\repr.py to repr.pycbyte-compiling C:\Python27\lib\shlex.py to shlex.pycbyte-compiling C:\Python27\lib\sre.py to sre.pycbyte-compiling C:\Python27\lib\sre_compile.py to sre_compile.pycbyte-compiling C:\Python27\lib\sre_constants.py to sre_constants.pycbyte-compiling C:\Python27\lib\sre_parse.py to sre_parse.pycbyte-compiling C:\Python27\lib\stat.py to stat.pycbyte-compiling C:\Python27\lib\string.py to string.pycbyte-compiling C:\Python27\lib\stringprep.py to stringprep.pycbyte-compiling C:\Python27\lib\struct.py to struct.pycbyte-compiling C:\Python27\lib\subprocess.py to subprocess.pycbyte-compiling C:\Python27\lib\tempfile.py to tempfile.pycbyte-compiling C:\Python27\lib\textwrap.py to textwrap.pycbyte-compiling C:\Python27\lib\threading.py to threading.pycbyte-compiling C:\Python27\lib\token.py to token.pycbyte-compiling C:\Python27\lib\tokenize.py to tokenize.pycbyte-compiling C:\Python27\lib\traceback.py to traceback.pycbyte-compiling C:\Python27\lib\types.py to types.pycbyte-compiling C:\Python27\lib\unittest\__init__.py to unittest\__init__.pyccreating E:\python\build\bdist.win32\winexe\collect-2.7\unittestbyte-compiling C:\Python27\lib\unittest\case.py to unittest\case.pycbyte-compiling C:\Python27\lib\unittest\loader.py to unittest\loader.pycbyte-compiling C:\Python27\lib\unittest\main.py to unittest\main.pycbyte-compiling C:\Python27\lib\unittest\result.py to unittest\result.pycbyte-compiling C:\Python27\lib\unittest\runner.py to unittest\runner.pycbyte-compiling C:\Python27\lib\unittest\signals.py to unittest\signals.pycbyte-compiling C:\Python27\lib\unittest\suite.py to unittest\suite.pycbyte-compiling C:\Python27\lib\unittest\util.py to unittest\util.pycbyte-compiling C:\Python27\lib\warnings.py to warnings.pycbyte-compiling C:\Python27\lib\weakref.py to weakref.pycbyte-compiling E:\python\build\bdist.win32\winexe\temp\bz2.py to bz2.pycbyte-compiling E:\python\build\bdist.win32\winexe\temp\select.py to select.pycbyte-compiling E:\python\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc*** copy extensions ***copying C:\Python27\DLLs\bz2.pyd -> E:\python\distcopying C:\Python27\DLLs\select.pyd -> E:\python\distcopying C:\Python27\DLLs\unicodedata.pyd -> E:\python\dist*** copy dlls ***copying C:\Python27\w9xpopen.exe -> E:\python\distcopying C:\Windows\system32\python27.dll -> E:\python\distsetting 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, andmake 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.dllE:\python>

此时在同目录下有两个文件夹,其中可执行文件就在其中:

Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation。保留所有权利。C:\Users\sean>e:E:\>cd pythonE:\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>          build2017/06/21  18:14    <DIR>          dist2017/06/21  18:07                20 hello.py2017/06/21  18:08                78 setup.py               2 个文件             98 字节               4 个目录 104,372,019,200 可用字节E:\python>cd distE:\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.pyd2017/06/21  18:12            18,944 hello.exe2017/06/21  18:12         1,506,260 library.zip2010/07/04  09:03         2,286,080 python27.dll2010/07/04  09:04            11,776 select.pyd2010/07/04  09:03           688,128 unicodedata.pyd2010/07/04  09:01            49,664 w9xpopen.exe               7 个文件      4,632,532 字节               2 个目录 104,372,019,200 可用字节E:\python\dist>hello.exeHello World!E:\python\dist>



阅读全文
0 0
原创粉丝点击