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格式)或自定义的图片资源,然后在打包时指定该图标。以下是如何操作的步骤:

  1. 准备图标文件
    确保你的图标文件命名为 icon.ico(或者任何你想要的名称),并放在项目目录中。如果你希望在EXE文件中使用自定义的图片资源,则必须先将其转换为 ICO格式。直接使用 PNG 文件作为图标并不适用于 Windows 可执行文件(.exe)。Windows 系统通常要求图标文件使用 ICO 格式(.ico),因为 ICO 格式可以包含多个图像尺寸和颜色深度,这样操作系统能够根据需要选择合适的图标。

    以下是一个免费的在线JPG转ICON的网站: https://www.aconvert.com/cn/icon/jpg-to-ico/

  2. 修改打包命令
    如果已准备好图标文件,可在运行 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中的 operationadd 时:
Python打包脚本为EXE可执行文件_第1张图片
当配置文件config.yaml中的 operationsub 时:
Python打包脚本为EXE可执行文件_第2张图片

你可能感兴趣的:(开发,python,bash)