Python打包脚本为EXE可执行文件
Python打包脚本为EXE可执行文件
- 1. 打包原理
- 2. 代码示例
- 2.1 项目需求
- 2.2 项目结构
- 2.3 文件内容
- 2.4 安装依赖库
- 2.5 使用Pyinstaller进行打包
- 3. 注意事项
- 3.1 新建虚拟环境
- 3.2 替换EXE文件图标
- 4. 效果展示
1. 打包原理
Python脚本打包为EXE的过程,主要是通过将Python代码、依赖库和Python解释器一起打包成一个可执行文件,从而实现不依赖于Python环境的独立执行。
以下是Python打包为EXE的主要原理和步骤:
-
依赖收集:打包工具(如PyInstaller)分析Python脚本的所有依赖,找到需要的模块和库。
-
解释器封装:将Python解释器一并打包,以便EXE文件在无Python环境的机器上也能运行。
-
字节码编译:将Python源代码编译成字节码文件(.pyc),提高运行效率并避免直接暴露源码。
-
资源打包:将脚本所需的静态资源(如图片、配置文件)打包到可执行文件中。
-
引导执行:生成引导代码,启动时加载Python解释器并执行目标脚本。
2. 代码示例
若需要将一个Python小项目打包成exe,则一般会选取入口程序(或称为主程序)作为打包的入口,并通过打包工具Pyinstaller进行打包操作。以下我们通过一个简单的小项目来实践一下使用Pyinstaller整个打包流程。
2.1 项目需求
创建一个Python小项目,包含三个脚本文件:add.py
(加法脚本)、sub.py
(减法脚本)和main.py
(主程序脚本),以及一个配置文件 config.yaml
。在 main.py 中导入 add.py 的加法函数和 sub.py 的减法函数,并通过读取 config.yaml 中的参数来决定调用加法或减法函数。项目编写完成后,使用 pyinstaller 命令将 main.py 打包为可执行文件 main.exe
。
2.2 项目结构
my_project/
├── add.py # 加法脚本
├── sub.py # 减法脚本
├── main.py # 主程序脚本
└── config.yaml # 配置文件
2.3 文件内容
add.py
- 加法脚本
# add.py
def add(a, b):return a + b
sub.py
- 减法脚本
def subtract(a, b):return a - b
config.yaml
- 配置文件
operation: "add" # 设置为 "add" 进行加法运算,设置为 "sub" 进行减法运算
a: 10
b: 5
main.py
- 主程序脚本
# main.py
import yaml
from add import add
from sub import subtract# 读取配置文件
config_path = "./config.yaml"
with open(config_path, "r", encoding="utf-8") as file:config = yaml.safe_load(file)operation = config.get("operation")
a = config.get("a", 0)
b = config.get("b", 0)# 根据配置文件选择操作
if operation == "add":result = add(a, b)print(f"Result of addition: {result}")elif operation == "sub":result = subtract(a, b)print(f"Result of subtraction: {result}")
else:print("Invalid operation specified in config.yaml")# 等待用户按任意键退出
input("Press any key to exit...")
2.4 安装依赖库
首先确保pyyaml
已安装,它用于读取配置文件:
pip install pyyaml
接着确保pyinstaller
已安装,它用于进行文件打包:
pip install pyinstaller
2.5 使用Pyinstaller进行打包
使用以下命令将 main.py
打包为 main.exe
,并确保将 config.yaml
文件打包到 EXE 中:
pyinstaller --onefile --add-data "config.yaml;." main.py
--onefile
:生成单个 EXE 文件。--add-data "config.yaml;."
:将 config.yaml 添加到打包后的文件夹中
3. 注意事项
3.1 新建虚拟环境
在打包Python项目时,建议新建一个虚拟环境并剔除不必要的文件,以减少生成的EXE文件的体积。这样可以避免将系统环境中的多余包一并打包进去,生成更精简的EXE文件。具体而言,可以只安装项目中实际使用的依赖包。一般情况下,使用 pip install -r requirements.txt
安装依赖,这样可以确保仅包含项目所需的库。
3.2 替换EXE文件图标
如果你想要更改生成的EXE文件的图标,可以使用 pyinstaller
的 --icon
选项。首先,准备一个图标文件(.ico格式)或自定义的图片资源,然后在打包时指定该图标。以下是如何操作的步骤:
-
准备图标文件
确保你的图标文件命名为icon.ico
(或者任何你想要的名称),并放在项目目录中。如果你希望在EXE文件中使用自定义的图片资源,则必须先将其转换为ICO
格式。直接使用 PNG 文件作为图标并不适用于 Windows 可执行文件(.exe)。Windows 系统通常要求图标文件使用 ICO 格式(.ico),因为 ICO 格式可以包含多个图像尺寸和颜色深度,这样操作系统能够根据需要选择合适的图标。以下是一个免费的在线JPG转ICON的网站: https://www.aconvert.com/cn/icon/jpg-to-ico/
-
修改打包命令
如果已准备好图标文件,可在运行pyinstaller
时添加--icon
参数。 这样,生成的EXE文件将使用你指定的图标。pyinstaller --onefile --add-data "config.yaml;." --icon="icon.ico" main.py
4. 效果展示
根据上述的流程编写示例项目,并使用在线JPG转ICON的网站将 universe.jpg
转成 universe.ico
后,打包的 main.exe
如下图所示:
当配置文件config.yaml中的 operation
为 add
时:
当配置文件config.yaml中的 operation
为 sub
时: