pyinstaller工具打包python项目详细教程

news2024/9/23 21:30:13

使用 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 系统有效)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1596277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CCF区块链论文录用资讯--ICDE 2024

ICDE是CCF A类会议 (数据库&#xff0f;数据挖掘&#xff0f;内容检索) 其2024录用了8篇区块链论文 Database technology for Blockchains I Efficient Partial Order Based Transaction Processing for Permissioned Blockchains &#xff08;针对许可区块链的高效的基于偏序…

动态规划|63.不同路径II

力扣题目链接 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();if (obstacleGrid[m - 1][n -1] 1 || obstacleGrid[0][0] 1) return 0;vector<ve…

永久关闭 Windows 11 系统更新

永久关闭 Windows 11 系统更新 请注意&#xff0c;关闭系统更新可能会使您的系统面临安全风险。确保您了解可能的后果&#xff0c;并在必要时考虑重新启用更新。 使用组策略编辑器&#xff08;仅限 Windows 11 Pro 和 Enterprise 版&#xff09; 步骤 1&#xff1a;打开本地…

Android Surface的跨进程绘制,如何绘制xml布局给Surface,全网独一份

工作中遇到了这样一个需求 需求&#xff1a;需要将一个自定义View或者自定义布局通过跨进程方式传递给第二个应用来展示&#xff0c;第一个应用负责布局的渲染&#xff0c;第二个应用不需要关心第一个应用的业务和实现&#xff0c;仅提供SurfaceView占位及展示 方案&#xff…

嵌入式学习day16-22(2024.04.06-13)

文章目录 C语言网络编程socket主机与网络字节序转换inet_addr、inet_aton&#xff08;ip转换&#xff09;inet_ntoa 网络字节序转换为IP字符串端口转换为网络字节序网络字节序转换为端口atoi &#xff08;字符串转换为整数&#xff09; UDP通信流程UDP多进程并发服务器服务端客…

【已测 非网上加密版】全新UI彩虹站长在线工具箱系统源码下载 全开源版本

支持高达72种站长工具、开发工具、娱乐工具等功能。本地调用API、自带免费API接口&#xff0c;是一个多功能性工具程序支持后台管理、上传插件、添加增减删功能。 环境要求 * PHP > 7.3 * MySQL > 5.6 * fileinfo扩展 * 使用Redis缓存需安装Redis扩展 部署 * 下载源代码 …

【嵌入式】交叉编译指南:将开源软件带到嵌入式世界

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

Java反序列化Commons-Collections-CC1链

环境搭建 JDK8u71以下&#xff0c;这个漏洞已经被修复了&#xff0c;这个JDK的以上版本都修复了漏洞 JDK8u65 下载地址 https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html这个时候来到 pom.xml 配置Maven依赖下载CommonsCollections3.2.…

20V/1.5A替代LT1963低压差线性稳压器

概述(替代LT1963) PCD3941 是一款低压差稳压器&#xff0c;专为快速瞬态响应而优化。该装置能够提供 1.5A 的输出电流&#xff0c;典型压降为 160mV。工作静态电流为 1mA&#xff0c;关机时降至 1μA以下&#xff0c;同时压差模式下静态电流控制良好。除了快速瞬态响应外&…

【Linux】封装一下简单库 理解文件系统

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、封装一下简单库 二、理解一下stdin(0)、stdout(1)、stderr(3) 2.1、为什么要有0、1、2呢&#xff1f; 2.2、特点 2.3、如果我想让2也和1重定向到一个文件…

护眼台灯哪个牌子好?护眼灯十大品牌推荐,绝对真香!

对于有孩子的家庭&#xff0c;特别是阅读爱好者&#xff0c;晚上阅读时的光线问题至关重要。昏暗环境长时间阅读&#xff0c;会严重伤害孩子的眼睛。因此&#xff0c;选择一款合适的护眼台灯显得尤为重要。但市场上品牌众多&#xff0c;护眼台灯哪个牌子好?这往往让人难以抉择…

【Tomcat 文件读取/文件包含(CVE-2020-1938)漏洞复现】

文章目录 前言 一、漏洞名称 二、漏洞描述 三、受影响端口 四、受影响版本 五、漏洞验证 六、修复建议 前言 近日在做漏扫时发现提示服务器存在CVE-2020-1938漏洞&#xff0c;故文章记录一下相关内容。 一、漏洞名称 Tomcat 文件读取/文件包含漏洞(CVE-2020-1938) 二、漏洞描…

a == 1 a== 2 a== 3 返回 true ?

1. 前言 下面这道题是 阿里、百度、腾讯 三个大厂都出过的面试题&#xff0c;一个前端同事跳槽面试也被问了这道题 // &#xff1f; 位置应该怎么写&#xff0c;才能输出 trueconst a ?console.log(a 1 && a 2 && a 3) 看了大厂的面试题会对面试官的精神…

这款开发工具大大降低IoT开发门槛!完全开源,上手超简单

对开发者来说&#xff0c;IoT 开发的难点是什么&#xff1f;首先&#xff0c;IoT 涉及到多个领域和多种开发技术&#xff0c;每一层的技术接口、协议都需要跨平台、跨领域、跨系统的合作协同&#xff1b;在互联互通方面&#xff0c;智能设备间的兼容性亟待进一步地打通融合&…

ANSYS 2023版 下载地址及安装教程

ANSYS是一款著名的工程仿真软件&#xff0c;广泛应用于航空航天、汽车、能源和制造等领域。它为工程师和设计师提供了强大的建模、分析和优化工具&#xff0c;可以帮助他们预测和优化产品的性能。 ANSYS提供了广泛的模拟功能&#xff0c;包括结构力学、流体力学、电磁场和热传…

Unity | Shader基础知识(第十二集:颜色混合)

目录 前言 一、日常生活中的常见现象 二、unity自带的一个结构体&#xff08;表面着色器SurfaceOutputStandard&#xff09; 三、自己写一个颜色混合的Shader 1.只加基础颜色Albedo 2.加入法线 3.加入光滑度 4.加入金属度 5.加入自发光 四、作者的话 前言 shader里每一…

2024第十五届蓝桥杯 JAVA B组

目录 前言&#xff1a;试题 A: 报数游戏试题 B: 类斐波那契循环数试题C:分布式队列 前言&#xff1a; 没参加这次蓝桥杯算法赛&#xff0c;十四届蓝桥杯被狂虐&#xff0c;对算法又爱又恨&#xff0c;爱我会做的题&#xff0c;痛恨我连题都读不懂的题&#x1f62d;,十四届填空只…

计算方法实验5:对鸢尾花数据集进行主成分分析(PCA)并可视化

任务 iris数据集包含150条数据&#xff0c;从iris.txt读取&#xff0c;每条数据有4个属性值和一个标签&#xff08;标签取值为0&#xff0c;1&#xff0c;2&#xff09;。要求对这150个4维数据进行PCA&#xff0c;可视化展示这些数据在前两个主方向上的分布&#xff0c;其中不…

鸿蒙原生应用元服务-访问控制(权限)开发Stage模型向用户申请授权

一、向用户申请授权 当应用需要访问用户的隐私信息或使用系统能力时&#xff0c;例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等&#xff0c;应该向用户请求授权。这需要使用 user_grant 类型权限。在此之前&#xff0c;应用需要进行权限校验&#xff0c;以判断当前…

Golang教程一(环境搭建,变量,数据类型,数组切片map)

目录 一、环境搭建 1.windows安装 2.linux安装 3.开发工具 二、变量定义与输入输出 1.变量定义 2.全局变量与局部变量 3.定义多个变量 4.常量定义 5.命名规范 6.输出 格式化输出 7.输入 三、基本数据类型 1.整数型 2.浮点型 3.字符型 4.字符串类型 转义字…