将Python脚本封装成exe可执行文件
http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html
cx_freeze是用来将 Python 脚本封装成可执行程序的工具,支持最新的Python3.2版本。生成的执行文件具有跨平台性,而且运行的系统无须安装Python。目前类似功能的工具还有py2exe 和 PyInstaller,其中貌似py2exe知名度最高了,但是很久没有更新了,至于打包质量不做评价,毕竟萝卜青菜各有所爱;PyInstaller不太了解,据说工序很复杂;至于cx_freeze的强大功能及易用性,本人强烈推荐。
详细安装步骤如下:
1. 安装cx_freeze(官方下载地址:http://cx-freeze.sourceforge.net)
2. 检查cx_freeze安装是否成功(Windows OS)
3. 准备一个简单的hello.py小程序
hello.py
4. 把Python的脚本封装成可执行文件(两种方法)
- 使用参数:
CMD> cxfreeze hello.py --target-dir dist
- 使用配置文件(个人推荐=>一次编写,到处可用?):
CMD> python setup.py build
setup.py配置程序:
1 # 2 # 文 件 名:setup.py 3 # 功能描述:cx_freeze封装Python脚本的配置文件 4 # 5 # 作者:Renzo 日期:2012/01/01 6 # 7 # 版权:可以使用、传播,但请保留出处;如需修改,请告知作者。 8 # 9 10 from cx_Freeze import setup, Executable11 12 13 # 首先处理path,includes,excludes,packages等内部变量14 base = "Win32GUI"15 path = []16 includes = []17 excludes = [‘_gtkagg‘, ‘_tkagg‘, ‘bsddb‘, ‘curses‘, ‘email‘, ‘pywin.debugger‘,18 ‘pywin.debugger.dbgcon‘, ‘pywin.dialogs‘, ‘tcl‘, ‘Tkconstants‘,19 ‘Tkinter‘]20 packages = []21 22 23 # 这里可以编写客户化的封装前处理代码。例如:数据文件的处理24 25 26 27 # 配置封装的参数28 GUI2Exe_Target_Main = Executable(29 path = path,30 base = base,31 32 # 生成可执行文件的主文件33 script = "simple.py",34 35 # 生成可执行文件及一些依赖文件的目录36 targetDir = r"dist",37 # 可执行文件的名称38 targetName = "simple.exe",39 # 可执行文件的ico图标40 icon = "simple.ico",41 42 includes = includes,43 excludes = excludes,44 packages = packages,45 46 # 是否需要压缩模块的字节码47 compress = True,48 49 # 是否拷贝依赖文件到目标目录50 copyDependentFiles = True,51 52 # 是否附加脚本模块到执行文件53 appendScriptToExe = True,54 # 是否添加脚本模块到共享库55 appendScriptToLibrary = False,56 57 # 设置快捷方式的路径及名称58 shortcutDir = "",59 shortcutName = ""60 )61 62 63 # 设置安装时软件包的描述信息64 setup(65 name = "Simple",66 version = "0.1",67 description = "My first python program",68 69 author = "Renzo",70 author_email = "[email protected]",71 72 url = "wwww.cnblogs.com/renzo",73 74 # 生成的可执行文件75 executables = [GUI2Exe_Target_Main]76 )77 78 79 # 这里可以编写客户化的封装后处理代码。例如:临时数据的清除,数据包的发布等80 81 82 83 # 到此,整个setup脚本已经完成。
5. 生成的可执行文件(xxxx.exe)
6. 执行结果
恭喜你,可以把整个目标目录打包发布了。
时间: 2024-12-20 00:34:34