PyQt5 是 Python 与 Qt5 的结合,用于创建功能丰富的桌面应用程序。打包 PyQt5 程序到一个可执行的 .exe 文件使得无需安装运行环境和其他依赖的情况下可以直接运行。常用的 PyQt5 打包工具有 PyInstaller 和 cx_Freeze 等。
### 打包原理
打包 PyQt5 程序主要为三个阶段:
1. 将 Python 脚本编译为字节码(.pyc 文件)。
2. 将所有必需的资源文件(字节码文件、依赖库、图片、音频等)收集到一个临时文件夹中。
3. 将整个临时文件夹转换为一个可执行文件,它包含一个 Python 解释器以运行字节码文件。
在用户运行可执行文件时,应用程序将解压并运行字节码文件。由于可执行文件包含了一个自带的 Python 解释器和所有依赖库,用户无需额外安装任何运行环境。
### 使用 PyInstaller 打包
1. 安装 PyInstaller:
打开命令行终端(例如,CMD 或 PowerShell),运行以下命令:
```
pip install pyinstaller
```
2. 打包程序:
在终端中导航到 PyQt5 程序所在的目录,然后运行以下命令,其中 `your_script.py` 为你的 PyQt5 源代码文件:
```
pyinstaller --onefile --windowed your_script.py
```
`--onefile` 选项将所有资源打包到一个单独的可执行文件中。
`--windowed` 选项禁用控制台窗口,适用于 GUI 应用程序。
3. 获取可执行文件:
打包完成后,你可以在生成的 `dist` 子文件夹中找到可执行文件(.exe),将其复制出来,然后将程序发给其他人即可。
注意:如果你的程序使用了图标、图片等资源,请在打包前将资源文件的相对路径修改为相对于可执行文件的路径。
### 使用 cx_Freeze 打包
1. 安装 cx_Freeze:
打开命令行终端,运行以下命令:
```
pip install cx-freeze
```
2. 创建 setup.py 文件:
在 PyQt5 程序所在的目录下创建一个 `setup.py` 文件,写入以下内容,其中 `your_script.py` 为你的 PyQt5 源代码文件:
```python
from cx_Freeze import setup, Executable
setup(
name="Your App Name",
version="1.0",
description="Your App Description",
executables=[Executable("your_script.py", base="Win32GUI")]
)
```
3. 打包程序:
在终端中导航到包含 `setup.py` 文件的目录,运行以下命令:
```
python setup.py build
```
4. 获取可执行文件:
在 `build` 子文件夹中找到可执行文件,拷贝并和所需资源文件(如图片、音频等)一起发送给他人。注意在使用资源文件时,务必以可执行文件所在的目录作为资源的相对路径。