python从入门到精通(二十):python的exe程序打包制作

python的exe程序打包制作

  • python打包的概念
  • python打包的模块
    • 导入模块
    • 安装验证
    • 基本语法
    • 命令参数
    • 文件夹模式
    • 单文件模式
    • 资源嵌入exe
    • 更改图标
    • 启动画面(闪屏)
    • 禁用异常提示

python打包的概念

将普通的*.py程序文件打包成exe文件。exe文件即可执行文件,打包后的*.exe应用不用依赖python,可以在他人的电脑上运行。
PyInstaller 制作出来的执行文件并不是跨平台的,如果需要为不同平台打包,就要在相应平台上运行PyInstaller进行打包。

python打包的模块

pyinstaller是一个第三方模块,专用于python程序的exe打包

导入模块

pip install pyinstaller

安装验证

pyinstaller --version

基本语法

最简单的打包方式是:

pyinstaller test.py  # 默认文件夹模式

pyinstaller生成spec文件将一些打包参数放到里面,然后进行打包,打包完成后目录下存在dist文件夹,里面有打包后的文件。还会生成一个build文件夹写入日志

命令参数

-D 文件夹模式。在打包完成后生成一个文件夹,其中包含一个exe文件和一个包含若干依赖文件的文件夹
-F 单文件模式。在打包完成后只会生成一个单独的exe文件
–add-data 指定一个文件夹或文件(非二进制),将其嵌入到exe中
–add-binary 指定二进制的文件夹或文件
-p/–paths提供一个路径进行搜索并且导入里面的模块(不同的路径使用路径分隔符os.pathsep分隔开,或者多次使用这个参数)这可以解决有时候第三方模块找不到的问题。
–hidden-import / --hiddenimport 需要进行额外导入的模块。当pyinstaller在程序中找不到一些模块时,需要你额外指定。这个参数可以多次使用,可以解决一些模块找不到的问题。
–splash 添加一个启动画面(图片文件)路径,在程序运行前显示指定的启动图片,起到加载提示的效果。
-c 打包程序运行后出现一个黑色的控制台窗口(默认)
-w 打包程序运行后隐藏控制台窗口
-i /icon 设置打包后exe程序的图标(只能在Windows和macOS上使用)
–disable-windowed-traceback 禁用异常提示(只能在Windows和macOS上使用)

命令实例:

pyinstaller -D -i "icon.ico" test.py

位置参数在打包时放在最后,是需要打包的文件路径,或是spec文件路径

文件夹模式

资源文件复制和exe文件位于同一位置

pyinstaller -w test.py

单文件模式

资源文件复制和exe文件位于同一位置

pyinstaller -w -F test.py

资源嵌入exe

资源嵌入exe只在单文件模式下使用。文件夹模式下,资源文件夹不会嵌入到exe中,但是会被复制到exe所在的文件夹。

文件开头通过以下函数返回正确的路径

import tkinter as tk  # 导入tkinter
import sys
import ostk = tk.Tk()  # 创建窗口
tk .title("目录扫描工具")  # 更改标题
def get_path(relative_path):try:base_path = sys._MEIPASSexcept AttributeError:base_path = os.path.abspath(".")return os.path.normpath(os.path.join(base_path, relative_path))
image = tk.PhotoImage(file=get_path("assets/1.png"))
label = tk.Label(tk , text="准备,开始扫描!", image=image, compound="top")
label.pack()  # 显示图片root.mainloop()  # 保持窗口运行
pyinstaller -w -F --add-data assets;assets test.py

更改图标

pyinstaller -w -F -i icon.ico my_app_name.py

启动画面(闪屏)

支持闪屏,需要先准备一张图片,必须是PNG格式(如果你安装了pillow模块,可以用pillow模块支持的其他格式)。然后,在打包时加上–splash参数,并传入图片路径。
在程序开头部分添加以下代码

try:import pyi_splashpyi_splash.close()
except ImportError:pass
pyinstaller --splash 2.png my_app_name.py

禁用异常提示

--disable-windowed-traceback

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

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

相关文章

python分离字符串 2022年12月青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析

目录 python分离字符串 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python分离字符串 2022年12月 python编程等级考试级编程题 一、题目要…

【数据结构】链表OJ面试题5《链表的深度拷贝》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表,判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 NULLhttp://t.cs…

类和对象——封装

师从黑马程序员 封装 封装的意义一 在设计类的时候,属性和行为写在一起,表现事物 语法: class 类名{ 访问权限:属性/行为 }; 设计一个圆类,求圆的周长 代码: 示例1: #inc…

1 月 NFT 市场动态:Polygon 增长,Mooar 崛起,TinFun 掀起文化浪潮

作者:stellafootprint.network 数据源:NFT Research - Footprint Analytics 2024 年 1 月,加密货币与 NFT 市场迎来了重要的转折点,其中美国首批现货比特币 ETF 的亮相尤为引人注目,这一金融一体化的里程碑事件吸引了…

论文阅读-One for All : 动态多租户边缘云平台的统一工作负载预测

论文名称:One for All: Unified Workload Prediction for Dynamic Multi-tenant Edge Cloud Platforms 摘要 多租户边缘云平台中的工作负载预测对于高效的应用部署和资源供给至关重要。然而,在多租户边缘云平台中,异构的应用模式、可变的基…

【C/C++】2024春晚刘谦春晚魔术步骤模拟+暴力破解

在这个特别的除夕夜,我们不仅享受了与家人的温馨团聚,还被电视机前的春节联欢晚会深深吸引。特别是,魔术师刘谦的精彩表演,为我们带来了一场视觉和心灵的盛宴。在我的博客“【C/C】2024春晚刘谦春晚魔术步骤模拟暴力破解”中&…

c#cad 创建-直线(五)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 这段代码是用于在AutoCAD中创建一条直线。首先获取当前活动文档和数据库的引用,然后创建一个编辑器对象用于提示用户输入。接下来,在一个事务中获取模型空间的块表记录,并定义直线的长度…

「数据结构」哈希表2:实现哈希表

🎇个人主页:Ice_Sugar_7 🎇所属专栏:Java数据结构 🎇欢迎点赞收藏加关注哦! 实现哈希表 🍉扩容🍉插入🍉获取value🍉源码 🍉扩容 在讲插入之前需要…

Hive的Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是:inner join(内连接)、left join(左连接)、right join(右连接)、full outer join(全外连接)、left semi join(左…

求路径/步骤(前缀)

紧急救援 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务…

docker磁盘不足!已解决~

目录 🍟1.查看docker镜像目录 🧂2.停止docker服务 🥓3.创建新的目录 🌭4.迁移目录 🍿5.编辑迁移的目录 🥞6.重新加载docker 🍔7.检擦docker新目录 🍳8.删掉旧目录 1.查看doc…

Vulnhub靶场 DC-8

目录 一、环境搭建 二、信息收集 1、主机发现 2、指纹识别 三、漏洞复现 1、SQL注入 sqlmap工具 2、dirsearch目录探测 3、反弹shell 4、提权 exim4 5、获取flag 四、总结 一、环境搭建 Vulnhub靶机下载: 官网地址:https://download.vulnhub.com/dc/DC-…

鸿蒙开发系列教程(十八)--页面内动画(1)

页面内的动画 显示动画 语法:animateTo(value: AnimateParam, event: () > void): void 第一个参数指定动画参数 第二个参数为动画的闭包函数。 如:animateTo({ duration: 1000, curve: Curve.EaseInOut }, () > {动画代码}) dura…

ubuntu22.04下使用conda安装pytorch(cpu及gpu版本)

本文介绍了conda下安装cpu、gpu版本的pytorch;并介绍了如何设置镜像源 ubuntu环境安装pytorch的CPU版本与GPU版本 系统:ubuntu22.04 显卡:RTX 3050 依赖工具:miniconda 确认环境 lsb_release -a No LSB modules are available.…

软件测试-测试用例研究-如何编写一份优秀的测试用例

什么是测试用例 测试用例是一组由测试输入、执行条件、预期结果等要素组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档。测试用例是软件测试的核心,它把测试系统的操作步骤用文档的形式描述出来&#xf…

安装Centos系统

1.镜像安装 镜像安装:Centos7安装 2.安装过程(直接以图的形式呈现) 选择你已经下载好的镜像 回车即可,等待安装 等待安装即可

2月7号寒假作业

第七章 运算符重载 一、填空题 1、在下列程序的空格处填上适当的字句&#xff0c;使输出为&#xff1a;0&#xff0c;2&#xff0c;10。 #include <iostream> #include <math.h> class Magic {double x; public: Magic(double d0.00):x(fabs(d)) {} Mag…

华为机考入门python3--(13)牛客13-句子逆序

分类&#xff1a;列表 知识点&#xff1a; 列表逆序&#xff08;和字符串逆序是一样的&#xff09; my_list[::-1] 题目来自【牛客】 def reverse_sentence(sentence): # 将输入的句子分割words sentence.split() # 将单词逆序排列 words words[::-1] # 将单词用空…

算法刷题 DAY50

70.爬楼梯 int climbStairs(int n) {int dp[50] {0};//dp[i]代表上到该楼梯有多少种方法// dp[0]无意义dp[1] 1;d[2] 2;if (n 1 || n 2)return dp[n];for (int i 3; i < n; i) {//从3开始dp[i] dp[i - 2] dp[i - 1];}return dp[n]; } 746. 使用最小花费爬楼梯 //…

VueCLI核心知识1:ref属性、props配置、mixin混入

1 ref 属性 ref属性类似于js原生获取DOM元素 <template><div><h1 v-text"msg" ref"title"></h1><button click"showDom">点我输出上方的Dom元素</button><School ref"sch"></School>…