一、打包工具
常用pyinstaller或者cx_Freeze
1. pyinstaller
1)pyinstaller适用于项目环境简单的项目,项目环境复杂的话容易出现打包过程中某些包里部分函数丢失的情况。
2)只需要通过终端命令行就可以实现项目打包。
2. cx_Freeze
1)cx_Freeze适合项目环境比较复杂的项目的打包,比如项目环境包含gdal、gma等比较难装的库。
2)相比于pyinstaller而言,他需要写一个set_up的打包配置文件,将需要打包的项目的相关信息进行配置,再在终端运行set_up.py文件。
cx_Freeze通常生成的是一个包含多个文件的目录结构,而不是单个可执行文件;
PyInstaller既可以将项目打包成一个可执行文件也可以是一个包含多文件的目录结构。
二、打包具体过程
1. 使用pyinstaller打包步骤:
(1)安装 PyInstaller
pip install pyinstaller
(2)准备好要打包成exe的python脚本,例如脚本名称为my_script.py
(3)使用PyInstaller 打包,在终端中输入以下代码:
#使用 --onefile 选项,生成一个单独的可执行文件
pyinstaller --onefile my_script.py
#使用 --onedir 选项,生成一个包含所有文件的目录结构
pyinstaller --onedir my_script.py
(4)如果你的脚本需要使用资源文件(如图片、配置文件等),你可以使用 --add-data 选项来添加这些文件。例如:
pyinstaller --onefile --add-data "path/to/resource:destination/folder" my_script.py
# path/to/resource 是资源文件的路径
#destination/folder 是资源文件在打包后的目标路径
(5)检查生成的文件
打包完成后,你会在当前目录下看到一个 dist 文件夹和一个 build 文件夹。
–> dist 文件夹中包含生成的可执行文件或目录结构。
–> build 文件夹包含打包过程中生成的临时文件。
2.使用cx_Freeze 打包步骤:
(1)安装 cx_Freeze
pip install cx_Freeze
(2)准备好要打包成exe的python脚本,例如脚本名称为my_script.py
(3) 创建 setup.py 文件
cx_Freeze 需要一个 setup.py 文件来定义打包的配置。在你的项目目录中创建一个名为 setup.py 的文件,并添加以下内容:
import sys
from cx_Freeze import setup, Executable
# 排除不需要的 DLL 文件
excludes = ['ext-ms-win32-subsystem-query-l1-1-0.dll']
# 基础设置
base = None
if sys.platform == "win32":
base = "Win32GUI" # 如果是 Windows GUI 程序
# 可执行文件的设置
executables = [
Executable(
'app.py', # 主脚本文件
base=base,
target_name='MyApp' # 可执行文件名称
)
]
# 打包设置
setup(
name='MyApp',
version='1.0',
description='我的应用程序',
executables=executables,
options={
'build_exe': {
'excludes': excludes, # 排除不需要的文件
'include_files': [], # 包含需要的文件
'packages': ['gma', 'uvicorn', 'uvicorn.loops.auto', 'uvicorn.protocols.http.auto', 'app'], # 包含需要的包,打包完的exe运行时报错缺少哪个包就添加在这里,重新打包
'include_msvcr': True, # 包含 Microsoft Visual C++ 运行时库
# 'silent': False, # 启用调试模式
}
}
)
(4)添加资源文件
如果你的脚本需要使用资源文件(如图片、配置文件等),你可以在 setup.py 中添加 include_files 选项。例如:
# 资源文件
include_files = [
("path/to/resource1", "destination/folder1"),
("path/to/resource2", "destination/folder2")
]
# 打包配置
setup(
name="MyApp",
version="1.0",
description="My Python Application",
options={
"build_exe": {
"include_files": include_files
}
},
executables=executables
)
(5)使用 cx_Freeze 打包:在终端导航到包含 setup.py 文件的目录,然后运行以下命令
python setup.py build
(6)检查生成的文件
打包完成后,你会在当前目录下看到一个 build 文件夹。进入 build 文件夹,你会看到生成的可执行文件和相关文件。
(7)测试可执行文件
运行生成的可执行文件,确保它能够正常工作。