cx_Freeze(http://cx-freeze.sourceforge.net/)是另一种用于创建独立可执行文件的工具。
它是一种比 PyInstaller 更加简单的解决方案,但也支持 3 个主要平台:
• Windows;
• Linux;
• Mac OS X。
与 PyInstaller 一样,它不允许我们执行跨平台构建,因此你需要在想要分发的同一个
操作系统中创建可执行文件。cx_Freeze 的主要缺点是它不允许我们创建真正的单文件可执
行文件。用它构建的应用都需要与相关的 DLL 文件和库一起分发。假如我们想要创建与
PyInstaller 一节介绍过的相同的应用,示例用法也非常简单,如下所示:
$ cxfreeze myscript.py
copying C:\Python27\lib\site-packages\cx_Freeze\bases\Console.exe ->
D:\dev\app\dist\myscript.exe
copying C:\Windows\system32\python27.dll ->
D:\dev\app\dist\python27.dll
writing zip file D:\dev\app\dist\myscript.exe
(…)
copying C:\Python27\DLLs\bz2.pyd -> D:\dev\app\dist\bz2.pyd
copying C:\Python27\DLLs\unicodedata.pyd ->
D:\dev\app\dist\unicodedata.pyd
生成的文件结构如下所示:
$ tree /f
│ myscript.py
│
└───dist
bz2.pyd
myscript.exe
python27.dll
unicodedata.pyd
cx_Freeze 扩展了 distutils 包,而不是为构建规范提供自己的格式(像 PyInstaller 那
样)。也就是说,你可以使用熟悉的 setup.py 脚本来配置如何构建独立可执行文件。如果
你已经使用 setuptools 或 distutils 来分发包的话,那么使用 cx_Freeze 非常方便,因
为额外的集成只需要对 setup.py 脚本进行很小的修改。下面是这种 setup.py 脚本的一
个示例,利用 cx_Freeze.setup()在 Windows 上创建独立可执行文件,如下所示:
import sys
from cx_Freeze import setup, Executable
自动检测依赖。但可能需要微调。
build_exe_options = {“packages”: [“os”], “excludes”: [“tkinter”]}
setup(
name=“myscript”,
version=“0.0.1”,
description=“My Hello World application!”,
options={
“build_exe”: build_exe_options
},
executables=[Executable(“myscript.py”)]
)
利用这样一个文件,可以向 setup.py 脚本添加新的 build_exe 命令来创建新的可
执行文件:
$ python setup.py build_exe
cx_Freeze 的用法似乎比 PyInstaller 更简单一些,而且 distutils 集成是一个非常有
用的功能。不幸的是,这个项目可能会给没有经验的开发者带来一些麻烦。
• 在 Windows 中利用 pip 安装可能会有问题。
• 官方文档非常简短,有些地方还是缺失的。