1. 安装 cx_Freeze
首先,确保你已经安装了 cx_Freeze。你可以通过 pip 安装它:
pip install cx_Freeze
2.创建setup.py
from cx_Freeze import setup, Executable
import os# 确定包的文件和依赖
build_exe_options = {"packages": ["os"],"include_files": [(os.path.join("Config", "device.json"), "Config/device.json"),(os.path.join("Config", "vendor.json"), "Config/vendor.json"),(os.path.join("input", "Common.xlsx"), "input/Common.xlsx"),# 其他需要打包的文件和文件夹("TestCases", "TestCases"),("TestLog", "TestLog"),("UI", "UI"),("utils", "utils"),# 加入其他文件夹的路径,确保将其添加到你的环境中],
}setup(name="TestTool",version="0.1",description="TestTool",options={"build_exe": build_exe_options},executables=[Executable("main.py")], # 这里是你的运行程序的代码的py文件
)
3. 打包应用程序
在终端或命令提示符中,导航到包含 setup.py 的目录,然后运行以下命令:
python setup.py build
看到如下打印即可,执行此命令后,cx_Freeze 将会创建一个名为 build 的目录,包含你打包后的应用程序。
4. 运行你的应用程序
在 build 目录中,你可以找到打包后的应用程序文件。根据平台的不同,执行程序的方式略有不同:
在 Windows 中,找到可执行文件(.exe),双击运行。
在 Linux 中,找到可执行的文件,使用命令行执行它。
使用 cx_Freeze 编译 Python 程序后,生成的 lib 目录通常包含以下几个方面的内容:
Python 标准库:包含 Python 运行所需的标准库模块,例如 os、sys、re 等。
第三方库:如果你的应用程序依赖于第三方库(例如 numpy、pandas 等),这些库也会被包含在 lib 目录中。
解释器相关文件:包括 Python 解释器的动态链接库或共享库文件(如 pythonXY.dll 或 libpythonXY.so,其中
XY 是 Python 的版本号)。其他依赖文件:某些库可能还会包含额外的共享资源、C 扩展文件(.pyd 或 .so 文件),以及其他运行时所需的文件。
5. 其他配置(可选)
图标:你可以在 Executable 中添加图标支持,像这样:
Executable("main.py", base="Win32GUI", icon="your_icon.ico")
6. cx_Freeze 和pyinstaller的区别
6.1. 目的和功能
cx_Freeze:
主要用于创建跨平台的可执行文件。
支持从 Python 代码生成可执行文件,同时支持多种平台(Windows、macOS、Linux)。
更加灵活,适合需要细致控制打包流程的高级用户。
PyInstaller:
也是用于将 Python 程序打包成独立的可执行文件。
支持多平台,简单易用,适合快速打包和分发应用程序。
支持许多第三方库,特别是 GUI 工具包。
6.2. 配置文件
cx_Freeze:
使用 setup.py 文件进行配置,类似于标准 Python 的打包方式。
需要用户定义一些细节,例如要打包的文件、数据等。
PyInstaller:
可以使用简单的命令行参数快速生成可执行文件。
提供 .spec 文件,可以自定义打包过程的各个方面,但通常不需要直接编辑。
6.3. 依赖处理
cx_Freeze:
依赖处理相对手动,可能需要用户手动指定某些库和文件。
PyInstaller:
自动分析依赖性,通常能自动检测并包含所需的库和文件。
对于一些复杂的项目,可能需要进一步手动调整。
6.4. 用户社区
cx_Freeze 和 PyInstaller 都有活跃的用户社区,但 PyInstaller 的用户社区较大,文档和支持资源更为丰富。这使得遇到问题时,更容易找到解决方案。
6.5. 大小和性能
cx_Freeze:
生成的可执行文件一般比较小,因为它允许更细粒度的控制。
PyInstaller:
由于其自动打包特性,生成的可执行文件通常比较大,但方便于使用和分发。
结论
选择使用 cx_Freeze 还是 PyInstaller 主要取决于具体需求。如果你需要快速、简单的打包过程,PyInstaller 可能是更好的选择。如果你需要更灵活的打包配置和控制,特别是在处理较复杂的项目时,cx_Freeze 可能更合适。