使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象、命令式、函数式和过程式编程。
由于Python拥有一个巨大而广泛的标准库,这使得Python功能十分强大,开发者在标准库提供的基础上能快速完成想要的功能。
Python在所有操作系统上实现了解释器,这使得Python可以跨平台运行于不同操作系统之上。
可使用跨平台vsCode(github wiki en wiki chs)来编辑和调试Python脚本(注:调试需要安装ms-python 其github在这里,可在vscode的Extensions面板中搜索python找到它然后直接安装)。
ms-python提供了高亮、debug、格式化、测试等功能
还可以在vscode中安装MagicPython,来进行语法高亮、美化等功能
在vsCode为当前python文件指定python版本
还有一款比较好用的python IDE:PyCharm
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统
其功能包括 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制
Python有2个版本:Python2(2000.10.16发布)和Python3(2008.12.3发布)。
Python3不完全兼容Python2。不过由于Python2使用广泛,后来很多Python3新特性也被移植到旧的Python2.6/2.7版本中。
如:在Python2中,print是一个关键字;而Python3中,print是一个函数。
适用于Python3以上版本以及Python2.6/2.7
print("Hello, world!")
适用于Python2.6以下版本以及Python2.6/2.7
print "Hello, world!"
Python2.7建议下载Python 2.7.15及以上版本:这些版本已集成setuptools模块和pip插件管理工具
pylint模块(代码静态检查):pip install pylint
Python的几个重要环境变量:
变量名 | 描述 |
PYTHONPATH | PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找 |
PYTHONSTARTUP | Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码 |
PYTHONCASEOK | 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写 |
PYTHONHOME | 另一种模块搜索路径。该变量中定义的路径会被环境变量PYTHONSTARTUP和PYTHONPATH引用 |
然而,Python脚本需安装Python环境才能被解释执行,为了使开发出的Python脚本在所有的机器上运行,我们可以使用py2exe来发行我们的Python脚本。
py2exe可以把Python脚本转换成windows下的exe可执行程序(即不需安装Python)。
Python2.7(32位)请下载安装:py2exe-0.6.9.win32-py2.7.exe
Python2.7(64位)请下载安装:py2exe-0.6.9.win64-py2.7.amd64.exe
注:安装完Python后,会将Python的安装目录添加到系统变量的Path中
下载其他Python2对应的py2exe版本请访问:https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
Python3.3/3.4(32位)请下载安装:py2exe-0.9.2.2.win32.exe
Python3.3/3.4(64位)请下载安装:py2exe-0.9.2.2.win-amd64.exe
注:py2exe不支持最新Python3.6(原因是Python3.6采用了新的字节码格式)
由于我的本机开发环境是Python2.7(32位),因此安装对应的安装包是py2exe-0.6.9.win32-py2.7.exe
安装完成后,py2exe会向E:\Python27目录中拷贝如下文件和目录
注1:py2exe-wininst.log为安装日志,记录详细的安装过程
注2:Removepy2exe.exe为卸载程序,执行E:\Python27\Removepy2exe.exe -u "E:\Python27\py2exe-wininst.log"卸载py2exe
py2exe主要实现如下功能:
① 编译Python标准库成字节码,并打包到library.zip压缩包中
② 拷贝Python相关的运行时库
③ 转换Python脚本成exe可执行文件
④ 拷贝相关的资源文件
下文以CalcMD5.py为例,说明py2exe转换过程:
1. Python2.7(32位)环境下使用vscode编写的CalcMD5.py
#!/usr/bin/env python
#coding=utf-8 import BaseLib
if __name__ == '__main__':
BaseLib.PrintHello()
BaseLib.py的内容如下:
#!/usr/bin/env python
#coding=utf-8 def PrintHello():
print "Hello"
2. 编写py2exe转换脚本setup.py(放在CalcMD5.py同一目录)
from distutils.core import setup
import py2exe setup(console=["CalcMD5.py"])
更多setup.py配置用法说明:
① 上述 setup.py 中指定产生一个 console 程序; 若要产生一个有 windows 窗口的程序,将 "console" 改成 "windows":
setup(windows=["CalcMD5.py"])
② 若要生成多个可执行文件,只要将多个python文件名以 list 方式传给 setup() 即可:
setup(console=["CalcMD5.py", "other1.py", "other2.py"])
③ 也可以同时产生 console 和 windows 程序:
setup(console=["CalcMD5.py", "other1.py"], windows=["other2.py"])
④ 应用程序有时需要使用到一些外部文件,例如字体或是图片等, 通过setup()的data_files参数,可以将这些额外的文件加入发布目录中。
将一个或多个 (目的目录, [源文件1,源文件2...源文件n]) 形成的 tuple,包装成 list 指派给 data_files参数即可:
setup(console=["CalcMD5.py", "other1.py"], windows=["other2.py"],
data_files=[("img",[r"d:\documents\pic1.jpg",r"d:\documents\pic2.jpg"]),
("xml",[r"e:\config.xml"])]
)
最后产生的dist目录中,应该会有一个img目录,内含 pic1.jpg 和 pic2.jpg 两个文件,以及 xml 目录,内含一个 config.xml 文件。
⑤ 更多setup.py的语法请参考py2exe的例子 Lib\site-packages\py2exe\samples
3. 在CalcMD5.py目录下,执行以下命令进行转换
E:\Python27\python.exe setup.py py2exe
生成转换日志如下:
running py2exe
creating I:\Test\PythonTest\PyPrj1\build
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\collect-2.7
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\bundle-2.7
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\temp
creating I:\Test\PythonTest\PyPrj1\dist
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'unicodedata' (e:\Python27\DLLs\unicodedata.pyd -> unicodedata.pyd)
creating python loader for extension 'select' (e:\Python27\DLLs\select.pyd -> select.pyd)
creating python loader for extension '_hashlib' (e:\Python27\DLLs\_hashlib.pyd -> _hashlib.pyd)
creating python loader for extension 'bz2' (e:\Python27\DLLs\bz2.pyd -> bz2.pyd)
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling I:\Test\PythonTest\PyPrj1\BaseLib.py to BaseLib.pyc
byte-compiling I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\temp\_hashlib.py to _hashlib.pyc
byte-compiling I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\temp\bz2.py to bz2.pyc
byte-compiling I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\temp\select.py to select.pyc
byte-compiling I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\temp\unicodedata.py to unicodedata.pyc
byte-compiling e:\Python27\lib\StringIO.py to StringIO.pyc
byte-compiling e:\Python27\lib\UserDict.py to UserDict.pyc
byte-compiling e:\Python27\lib\__future__.py to __future__.pyc
byte-compiling e:\Python27\lib\_abcoll.py to _abcoll.pyc
byte-compiling e:\Python27\lib\_strptime.py to _strptime.pyc
byte-compiling e:\Python27\lib\_threading_local.py to _threading_local.pyc
byte-compiling e:\Python27\lib\_weakrefset.py to _weakrefset.pyc
byte-compiling e:\Python27\lib\abc.py to abc.pyc
byte-compiling e:\Python27\lib\atexit.py to atexit.pyc
byte-compiling e:\Python27\lib\base64.py to base64.pyc
byte-compiling e:\Python27\lib\bdb.py to bdb.pyc
byte-compiling e:\Python27\lib\calendar.py to calendar.pyc
byte-compiling e:\Python27\lib\cmd.py to cmd.pyc
byte-compiling e:\Python27\lib\codecs.py to codecs.pyc
byte-compiling e:\Python27\lib\collections.py to collections.pyc
byte-compiling e:\Python27\lib\copy.py to copy.pyc
byte-compiling e:\Python27\lib\copy_reg.py to copy_reg.pyc
byte-compiling e:\Python27\lib\difflib.py to difflib.pyc
byte-compiling e:\Python27\lib\dis.py to dis.pyc
byte-compiling e:\Python27\lib\doctest.py to doctest.pyc
byte-compiling e:\Python27\lib\dummy_thread.py to dummy_thread.pyc
byte-compiling e:\Python27\lib\encodings\__init__.py to encodings\__init__.pyc
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\collect-2.7\encodings
byte-compiling e:\Python27\lib\encodings\aliases.py to encodings\aliases.pyc
byte-compiling e:\Python27\lib\encodings\ascii.py to encodings\ascii.pyc
byte-compiling e:\Python27\lib\encodings\base64_codec.py to encodings\base64_codec.pyc
byte-compiling e:\Python27\lib\encodings\big5.py to encodings\big5.pyc
byte-compiling e:\Python27\lib\encodings\big5hkscs.py to encodings\big5hkscs.pyc
byte-compiling e:\Python27\lib\encodings\bz2_codec.py to encodings\bz2_codec.pyc
byte-compiling e:\Python27\lib\encodings\charmap.py to encodings\charmap.pyc
byte-compiling e:\Python27\lib\encodings\cp037.py to encodings\cp037.pyc
byte-compiling e:\Python27\lib\encodings\cp1006.py to encodings\cp1006.pyc
byte-compiling e:\Python27\lib\encodings\cp1026.py to encodings\cp1026.pyc
byte-compiling e:\Python27\lib\encodings\cp1140.py to encodings\cp1140.pyc
byte-compiling e:\Python27\lib\encodings\cp1250.py to encodings\cp1250.pyc
byte-compiling e:\Python27\lib\encodings\cp1251.py to encodings\cp1251.pyc
byte-compiling e:\Python27\lib\encodings\cp1252.py to encodings\cp1252.pyc
byte-compiling e:\Python27\lib\encodings\cp1253.py to encodings\cp1253.pyc
byte-compiling e:\Python27\lib\encodings\cp1254.py to encodings\cp1254.pyc
byte-compiling e:\Python27\lib\encodings\cp1255.py to encodings\cp1255.pyc
byte-compiling e:\Python27\lib\encodings\cp1256.py to encodings\cp1256.pyc
byte-compiling e:\Python27\lib\encodings\cp1257.py to encodings\cp1257.pyc
byte-compiling e:\Python27\lib\encodings\cp1258.py to encodings\cp1258.pyc
byte-compiling e:\Python27\lib\encodings\cp424.py to encodings\cp424.pyc
byte-compiling e:\Python27\lib\encodings\cp437.py to encodings\cp437.pyc
byte-compiling e:\Python27\lib\encodings\cp500.py to encodings\cp500.pyc
byte-compiling e:\Python27\lib\encodings\cp720.py to encodings\cp720.pyc
byte-compiling e:\Python27\lib\encodings\cp737.py to encodings\cp737.pyc
byte-compiling e:\Python27\lib\encodings\cp775.py to encodings\cp775.pyc
byte-compiling e:\Python27\lib\encodings\cp850.py to encodings\cp850.pyc
byte-compiling e:\Python27\lib\encodings\cp852.py to encodings\cp852.pyc
byte-compiling e:\Python27\lib\encodings\cp855.py to encodings\cp855.pyc
byte-compiling e:\Python27\lib\encodings\cp856.py to encodings\cp856.pyc
byte-compiling e:\Python27\lib\encodings\cp857.py to encodings\cp857.pyc
byte-compiling e:\Python27\lib\encodings\cp858.py to encodings\cp858.pyc
byte-compiling e:\Python27\lib\encodings\cp860.py to encodings\cp860.pyc
byte-compiling e:\Python27\lib\encodings\cp861.py to encodings\cp861.pyc
byte-compiling e:\Python27\lib\encodings\cp862.py to encodings\cp862.pyc
byte-compiling e:\Python27\lib\encodings\cp863.py to encodings\cp863.pyc
byte-compiling e:\Python27\lib\encodings\cp864.py to encodings\cp864.pyc
byte-compiling e:\Python27\lib\encodings\cp865.py to encodings\cp865.pyc
byte-compiling e:\Python27\lib\encodings\cp866.py to encodings\cp866.pyc
byte-compiling e:\Python27\lib\encodings\cp869.py to encodings\cp869.pyc
byte-compiling e:\Python27\lib\encodings\cp874.py to encodings\cp874.pyc
byte-compiling e:\Python27\lib\encodings\cp875.py to encodings\cp875.pyc
byte-compiling e:\Python27\lib\encodings\cp932.py to encodings\cp932.pyc
byte-compiling e:\Python27\lib\encodings\cp949.py to encodings\cp949.pyc
byte-compiling e:\Python27\lib\encodings\cp950.py to encodings\cp950.pyc
byte-compiling e:\Python27\lib\encodings\euc_jis_2004.py to encodings\euc_jis_2004.pyc
byte-compiling e:\Python27\lib\encodings\euc_jisx0213.py to encodings\euc_jisx0213.pyc
byte-compiling e:\Python27\lib\encodings\euc_jp.py to encodings\euc_jp.pyc
byte-compiling e:\Python27\lib\encodings\euc_kr.py to encodings\euc_kr.pyc
byte-compiling e:\Python27\lib\encodings\gb18030.py to encodings\gb18030.pyc
byte-compiling e:\Python27\lib\encodings\gb2312.py to encodings\gb2312.pyc
byte-compiling e:\Python27\lib\encodings\gbk.py to encodings\gbk.pyc
byte-compiling e:\Python27\lib\encodings\hex_codec.py to encodings\hex_codec.pyc
byte-compiling e:\Python27\lib\encodings\hp_roman8.py to encodings\hp_roman8.pyc
byte-compiling e:\Python27\lib\encodings\hz.py to encodings\hz.pyc
byte-compiling e:\Python27\lib\encodings\idna.py to encodings\idna.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp.py to encodings\iso2022_jp.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp_1.py to encodings\iso2022_jp_1.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp_2.py to encodings\iso2022_jp_2.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp_2004.py to encodings\iso2022_jp_2004.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp_3.py to encodings\iso2022_jp_3.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_jp_ext.py to encodings\iso2022_jp_ext.pyc
byte-compiling e:\Python27\lib\encodings\iso2022_kr.py to encodings\iso2022_kr.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_1.py to encodings\iso8859_1.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_10.py to encodings\iso8859_10.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_11.py to encodings\iso8859_11.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_13.py to encodings\iso8859_13.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_14.py to encodings\iso8859_14.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_15.py to encodings\iso8859_15.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_16.py to encodings\iso8859_16.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_2.py to encodings\iso8859_2.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_3.py to encodings\iso8859_3.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_4.py to encodings\iso8859_4.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_5.py to encodings\iso8859_5.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_6.py to encodings\iso8859_6.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_7.py to encodings\iso8859_7.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_8.py to encodings\iso8859_8.pyc
byte-compiling e:\Python27\lib\encodings\iso8859_9.py to encodings\iso8859_9.pyc
byte-compiling e:\Python27\lib\encodings\johab.py to encodings\johab.pyc
byte-compiling e:\Python27\lib\encodings\koi8_r.py to encodings\koi8_r.pyc
byte-compiling e:\Python27\lib\encodings\koi8_u.py to encodings\koi8_u.pyc
byte-compiling e:\Python27\lib\encodings\latin_1.py to encodings\latin_1.pyc
byte-compiling e:\Python27\lib\encodings\mac_arabic.py to encodings\mac_arabic.pyc
byte-compiling e:\Python27\lib\encodings\mac_centeuro.py to encodings\mac_centeuro.pyc
byte-compiling e:\Python27\lib\encodings\mac_croatian.py to encodings\mac_croatian.pyc
byte-compiling e:\Python27\lib\encodings\mac_cyrillic.py to encodings\mac_cyrillic.pyc
byte-compiling e:\Python27\lib\encodings\mac_farsi.py to encodings\mac_farsi.pyc
byte-compiling e:\Python27\lib\encodings\mac_greek.py to encodings\mac_greek.pyc
byte-compiling e:\Python27\lib\encodings\mac_iceland.py to encodings\mac_iceland.pyc
byte-compiling e:\Python27\lib\encodings\mac_latin2.py to encodings\mac_latin2.pyc
byte-compiling e:\Python27\lib\encodings\mac_roman.py to encodings\mac_roman.pyc
byte-compiling e:\Python27\lib\encodings\mac_romanian.py to encodings\mac_romanian.pyc
byte-compiling e:\Python27\lib\encodings\mac_turkish.py to encodings\mac_turkish.pyc
byte-compiling e:\Python27\lib\encodings\mbcs.py to encodings\mbcs.pyc
byte-compiling e:\Python27\lib\encodings\palmos.py to encodings\palmos.pyc
byte-compiling e:\Python27\lib\encodings\ptcp154.py to encodings\ptcp154.pyc
byte-compiling e:\Python27\lib\encodings\punycode.py to encodings\punycode.pyc
byte-compiling e:\Python27\lib\encodings\quopri_codec.py to encodings\quopri_codec.pyc
byte-compiling e:\Python27\lib\encodings\raw_unicode_escape.py to encodings\raw_unicode_escape.pyc
byte-compiling e:\Python27\lib\encodings\rot_13.py to encodings\rot_13.pyc
byte-compiling e:\Python27\lib\encodings\shift_jis.py to encodings\shift_jis.pyc
byte-compiling e:\Python27\lib\encodings\shift_jis_2004.py to encodings\shift_jis_2004.pyc
byte-compiling e:\Python27\lib\encodings\shift_jisx0213.py to encodings\shift_jisx0213.pyc
byte-compiling e:\Python27\lib\encodings\string_escape.py to encodings\string_escape.pyc
byte-compiling e:\Python27\lib\encodings\tis_620.py to encodings\tis_620.pyc
byte-compiling e:\Python27\lib\encodings\undefined.py to encodings\undefined.pyc
byte-compiling e:\Python27\lib\encodings\unicode_escape.py to encodings\unicode_escape.pyc
byte-compiling e:\Python27\lib\encodings\unicode_internal.py to encodings\unicode_internal.pyc
byte-compiling e:\Python27\lib\encodings\utf_16.py to encodings\utf_16.pyc
byte-compiling e:\Python27\lib\encodings\utf_16_be.py to encodings\utf_16_be.pyc
byte-compiling e:\Python27\lib\encodings\utf_16_le.py to encodings\utf_16_le.pyc
byte-compiling e:\Python27\lib\encodings\utf_32.py to encodings\utf_32.pyc
byte-compiling e:\Python27\lib\encodings\utf_32_be.py to encodings\utf_32_be.pyc
byte-compiling e:\Python27\lib\encodings\utf_32_le.py to encodings\utf_32_le.pyc
byte-compiling e:\Python27\lib\encodings\utf_7.py to encodings\utf_7.pyc
byte-compiling e:\Python27\lib\encodings\utf_8.py to encodings\utf_8.pyc
byte-compiling e:\Python27\lib\encodings\utf_8_sig.py to encodings\utf_8_sig.pyc
byte-compiling e:\Python27\lib\encodings\uu_codec.py to encodings\uu_codec.pyc
byte-compiling e:\Python27\lib\encodings\zlib_codec.py to encodings\zlib_codec.pyc
byte-compiling e:\Python27\lib\fnmatch.py to fnmatch.pyc
byte-compiling e:\Python27\lib\functools.py to functools.pyc
byte-compiling e:\Python27\lib\genericpath.py to genericpath.pyc
byte-compiling e:\Python27\lib\getopt.py to getopt.pyc
byte-compiling e:\Python27\lib\gettext.py to gettext.pyc
byte-compiling e:\Python27\lib\hashlib.py to hashlib.pyc
byte-compiling e:\Python27\lib\heapq.py to heapq.pyc
byte-compiling e:\Python27\lib\inspect.py to inspect.pyc
byte-compiling e:\Python27\lib\io.py to io.pyc
byte-compiling e:\Python27\lib\keyword.py to keyword.pyc
byte-compiling e:\Python27\lib\linecache.py to linecache.pyc
byte-compiling e:\Python27\lib\locale.py to locale.pyc
byte-compiling e:\Python27\lib\logging\__init__.py to logging\__init__.pyc
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\collect-2.7\logging
byte-compiling e:\Python27\lib\ntpath.py to ntpath.pyc
byte-compiling e:\Python27\lib\opcode.py to opcode.pyc
byte-compiling e:\Python27\lib\optparse.py to optparse.pyc
byte-compiling e:\Python27\lib\os.py to os.pyc
byte-compiling e:\Python27\lib\os2emxpath.py to os2emxpath.pyc
byte-compiling e:\Python27\lib\pdb.py to pdb.pyc
byte-compiling e:\Python27\lib\pickle.py to pickle.pyc
byte-compiling e:\Python27\lib\posixpath.py to posixpath.pyc
byte-compiling e:\Python27\lib\pprint.py to pprint.pyc
byte-compiling e:\Python27\lib\quopri.py to quopri.pyc
byte-compiling e:\Python27\lib\random.py to random.pyc
byte-compiling e:\Python27\lib\re.py to re.pyc
byte-compiling e:\Python27\lib\repr.py to repr.pyc
byte-compiling e:\Python27\lib\shlex.py to shlex.pyc
byte-compiling e:\Python27\lib\sre.py to sre.pyc
byte-compiling e:\Python27\lib\sre_compile.py to sre_compile.pyc
byte-compiling e:\Python27\lib\sre_constants.py to sre_constants.pyc
byte-compiling e:\Python27\lib\sre_parse.py to sre_parse.pyc
byte-compiling e:\Python27\lib\stat.py to stat.pyc
byte-compiling e:\Python27\lib\string.py to string.pyc
byte-compiling e:\Python27\lib\stringprep.py to stringprep.pyc
byte-compiling e:\Python27\lib\struct.py to struct.pyc
byte-compiling e:\Python27\lib\subprocess.py to subprocess.pyc
byte-compiling e:\Python27\lib\tempfile.py to tempfile.pyc
byte-compiling e:\Python27\lib\textwrap.py to textwrap.pyc
byte-compiling e:\Python27\lib\threading.py to threading.pyc
byte-compiling e:\Python27\lib\token.py to token.pyc
byte-compiling e:\Python27\lib\tokenize.py to tokenize.pyc
byte-compiling e:\Python27\lib\traceback.py to traceback.pyc
byte-compiling e:\Python27\lib\types.py to types.pyc
byte-compiling e:\Python27\lib\unittest\__init__.py to unittest\__init__.pyc
creating I:\Test\PythonTest\PyPrj1\build\bdist.win32\winexe\collect-2.7\unittest
byte-compiling e:\Python27\lib\unittest\case.py to unittest\case.pyc
byte-compiling e:\Python27\lib\unittest\loader.py to unittest\loader.pyc
byte-compiling e:\Python27\lib\unittest\main.py to unittest\main.pyc
byte-compiling e:\Python27\lib\unittest\result.py to unittest\result.pyc
byte-compiling e:\Python27\lib\unittest\runner.py to unittest\runner.pyc
byte-compiling e:\Python27\lib\unittest\signals.py to unittest\signals.pyc
byte-compiling e:\Python27\lib\unittest\suite.py to unittest\suite.pyc
byte-compiling e:\Python27\lib\unittest\util.py to unittest\util.pyc
byte-compiling e:\Python27\lib\warnings.py to warnings.pyc
byte-compiling e:\Python27\lib\weakref.py to weakref.pyc
*** copy extensions ***
copying e:\Python27\DLLs\_hashlib.pyd -> I:\Test\PythonTest\PyPrj1\dist
copying e:\Python27\DLLs\bz2.pyd -> I:\Test\PythonTest\PyPrj1\dist
copying e:\Python27\DLLs\select.pyd -> I:\Test\PythonTest\PyPrj1\dist
copying e:\Python27\DLLs\unicodedata.pyd -> I:\Test\PythonTest\PyPrj1\dist
*** copy dlls ***
copying e:\Python27\w9xpopen.exe -> I:\Test\PythonTest\PyPrj1\dist
copying C:\Windows\system32\python27.dll -> I:\Test\PythonTest\PyPrj1\dist
setting sys.winver for 'I:\Test\PythonTest\PyPrj1\dist\python27.dll' to 'py2exe'
copying e:\Python27\lib\site-packages\py2exe\run.exe -> I:\Test\PythonTest\PyPrj1\dist\CalcMD5.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. USER32.dll - C:\Windows\system32\USER32.dll
SHELL32.dll - C:\Windows\system32\SHELL32.dll
ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll
WS2_32.dll - C:\Windows\system32\WS2_32.dll
GDI32.dll - C:\Windows\system32\GDI32.dll
KERNEL32.dll - C:\Windows\system32\KERNEL32.dll
build目录是转换时生成的临时文件,最终转换出来的文件存放在dist目录中。执行CalcMD5.exe就可以打印出Hello字符串了。
最后将dist目录打包,就可以拷贝给他人使用了
Py2exe仅支持windows平台,其他python脚本转可执行程序工具
① Pyinstaller支持windows/linux/Mac osx,它本身并不是python模块。
② Py2app是把mac osx下的python程序打包的工具。
使用py2exe将python脚本转换成exe可执行文件的更多相关文章
- 将Python脚本封装成exe可执行文件 转
将Python脚本封装成exe可执行文件 http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html cx_freeze是用来将 Pyt ...
- pyinstaller使用-python项目转换成exe可执行文件
http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...
- 用py2exe将python文件转换成exe可执行程序
1.首先需要安装py2exe模块,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 然后用pip install 命令安装py2exe模块,如果你用的py ...
- 将python脚本转换成exe文件--pyinstaller
遇到的大坑: 直接运行python文件效果: 执行 pyinstaller -F -w -p -i ./123.ico ./main.py 在dict文件夹下生成exe文 ...
- python脚本打包成exe可执行文件
1. 工具pyinstaller (pip install pyinstaller) 2.生成exe (pyinstaller -F -w Capturing_PDFs.py) 参数 -F 生成单个文 ...
- 小白学习Python之路---py文件转换成exe可执行文件
一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...
- Python脚本打包成exe执行文件
需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...
- Python 程序打包成 exe 可执行文件
Python 程序打包工具 Python 是一个脚本语言,被解释器解释执行.它的发布方式: .py 文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装 Python 并且安装依赖 ...
- 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)
解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...
随机推荐
- 实用抓包工具:whistle
无论是前端开发还是客户端,实际开发过程中,抓包都经常被用到.工欲善其事必先利其器,一款好用的抓包工具也是必须的. 说到抓包,Windows系统上不少人都用过Fiddler,Mac或Linux上用Cha ...
- JavaScript函数定义 ,参数调用
一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...
- PMP应考知识点-合同类型以及选择要领
合同类型的选择貌似是必考知识点,加上对合同类型的了解和选择的要领,对于开展日常工作来讲也是挺有必要的.所以这两天重新回顾并总结了合同的种类和各种类的选择要领,与大家分享. 转走请标明出处 https ...
- shell 简单脚本编程
shell脚本编程 编译器,解释器 编程语言: 机器语言,汇编语言,高级语言 静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 C,C++,JAVA,C# 动态语言:解释型语言,on the ...
- python3 集合 操作方法
今天都是课, 就学这么点 不多说 睡觉睡觉!!! #!usr/bin/env/ python # -*- coding:utf-8 -*- # Author:XiaoFeng list = [1,2 ...
- Kafka 消费者相关配置
消费者相关配置类为 org.apache.kafka.clients.consumer.ConsumerConfig 具有以下配置参数 1. GROUP_ID_CONFIG = "grou ...
- Python存储系统(Redis)
存储系统数据缓存一般会使用三个模块:Mongodb,redis,memcache.其中memcache是轻量级缓存,只能将数据保存到内存中,redis可以配置数据保存在内存还是硬盘. 其主要用途有:不 ...
- Linux知识要点大全(第四章)
第四章 文件管理 *主要内容 文件和目录的操作: ①创建 ②删除 ③拷贝 ④重命名(剪切) ⑤查看 一:目录的操作 回顾与目录相关的命令 ls 查看目录中的内容 .pwd 打印当前目录 .cd ...
- Elasticsearch之索引模板index template与索引别名index alias
为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...
- spring-boot-starter-actuator /info获取空信息
用了spring-boot-starter-actuator,在监控页面对应服务中显示空值,下面是正常情况下有的值 pom配置了 <build> <plugins> <p ...