使用 Pyinstaller工具 编译打包 Python 项目生成 exe 可执行文件
1.pyinstaller介绍:
介绍:
PyInstaller 是一个将 Python 程序转换为独立可执行文件的工具。它能够在 Windows、Linux、Mac OS X、AIX 和 Solaris 等多种系统上运行。详细介绍可参考pyinstaller官网:https://www.pyinstaller.org
PyInstaller 主要优点:
1. PyInstaller 与任何 Python 版本兼容,从 2.3 版本开始支持。
2. PyInstaller 通过透明压缩功能,使生成的可执行文件更小。
3. PyInstaller 是完全跨平台的,可以在各种操作系统上运行。
4. PyInstaller 利用操作系统的支持来加载动态库,从而确保了完全的兼容性。
5. PyInstaller 较其他工具打包速度较快
2.下载安装pyinstaller工具
一 ** 通过 pip 快速安装(PyPI 清华源镜像仓库)**
pip install pyinstaller # 快速安装
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/ # PyPI 清华源镜像仓库
pyinstaller --version # 查看pyinstaller的版本
pip install -U pyinstaller # 若本地已经安装了旧版的 pyinstaller 进行更新 pyinstaller 工具
二 ** 通过 git clone 安装**【不建议】
git clone https://github.com/pyinstaller/pyinstaller
cd pyinstaller
pip install...
三 pyinstaller cmd 命令
pyinstaller 构建一个捆绑的应用程序的主命令
pyi-makespec 创建一个 spec 配置文件
pyi-archive_viewer 检查捆绑的应用程序
pyi-bindepend 显示可执行文件的依赖关系
pyi-grab_version 从 Windows 可执行文件中提取版本资源
pyi-set_version 将先前提取的版本资源应用到现有的 Windows 可执行文件中
3.完整打包流程
1.安装pyinstaller
2.在当前项目目录下开启 cmd 终端创建一个spec配置文件
3.编辑配置文件
以下是需要修改添加的配置信息,修改完成保存配置文件
注意事项[请仔细阅读]:
1.我们在开发的过程中所构建的python环境可能在site-packages下安装了很多的第三方库,我们在配置文件中引入python第三方资源后,导致最后打包成功的exe可执行程序比较打,运行启动慢等问题
解决方案:单独将需要打包的项目分开,本地构建一个新的虚拟环境,只安装本项目所需的第三方库即可。打包前测试新的环境代码运行成功,注意将虚拟环境的site-packages本地路径修改正确
2.在使用 PyInstaller 打包 Python 源文件时,需要注意文件路径不能出现英文空格和英文句号(.),源文件必须是 UTF-8 编码,暂不支持其他编码类型。
4.通过pyinstaller打包exe
pyinstaller main.spec #打包命令 注意:在main.spec层目录执行命令
打包成功:
执行成功结果,如果执行成功双击打开报错或者闪退,检查配置文件和第三方库是否引入
成功后python项目生成两个目录(build 和 dist),build是缓存文件,可以删除掉。dist 中就是打包的结果,在该目录下有生成的 exe 文件(如果非单个 exe 文件还会包含所依赖的库文件)
dist 文件夹是 PyInstaller 生成的打包文件的存放位置,其中包含与源程序同名的文件夹,以及可执行文件的动态链接库等。这个文件夹中的内容可以直接运行,其他人可以使用这个文件夹里的可执行文件。
build 文件夹是 PyInstaller 存储临时文件的目录,类似于 PyInstaller 的工作空间,其中包含相关的文件和日志信息。打包完成后,这个文件夹可以安全删除。
打包成功后将dist里面的exe可执行文件复制到项目的配置文件同级目录:
双击exe执行程序:执行成功如下图
至此使用pyinstaller打包python项目完成
扩展知识:
spec 配置选项 和 配置指令
# -*- mode: python ; coding: utf-8 -*-:指定文件的编码格式为UTF-8。
block_cipher = None:设置加密算法的密钥,如果不需要加密,则可以设置为 None。
a = Analysis(['myprogram.py']:指定要打包的Python源文件。
pathex=['/path/to/myprogram']:指定Python源文件的路径。
binaries=[]:指定要包含的二进制文件。
datas=[]:指定要包含的数据文件。
hiddenimports=[]:指定要包含的隐藏导入模块。
hookspath=[]:指定要搜索的钩子路径。
runtime_hooks=[]:指定要运行的运行时钩子。
excludes=[]:指定要排除的模块或包。
win_no_prefer_redirects=False:指定 Windows 下是否禁用重定向。
win_private_assemblies=False:指定 Windows 下是否使用私有程序集。
cipher=block_cipher:指定加密算法和密钥。
noarchive=False):指定是否禁用归档。
在 spec 文件中,还可以使用 Analysis、PyInstaller 等类来定义打包过程的各种操作和选项。例如,可以使用 Analysis 类来指定要打包的 Python 源文件、二进制文件、数据文件等,使用 PyInstaller 类来指定生成的可执行文件的名称、版本、图标等。
通过编辑 spec 文件,可以自定义 PyInstaller 的打包过程,以满足特定的需求和要求
pyinstaller 打包参数
PyInstaller 是一个用于将 Python 源文件(.py)打包成可执行文件的工具。在 PyInstaller 的打包过程中,可以选择相关 options 参数来实现其他预期效果
pyinstaller options… ~/myproject/source/myscript.py
常用命令参数
-F, --onefile:打包一个单个文件,产生一个文件用于部署。
-D, --onedir:打包多个文件,产生一个目录用于部署。
-K, --tk:在部署时包含 TCL / TK。
-a, --ascii:不包含编码,在支持 Unicode 的 python 版本上默认包含所有的编码。
-d, --debug:产生 debug 版本的可执行文件。
-w, --windowed, --noconsole:使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)。
-c, --nowindowed, --console:使用控制台子系统执行(默认),当程序启动的时候会打开命令行(只对 Windows 有效)。
-i, --icon=<file.ico>:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)