【Python】pyinstaller打包百科全书

news2024/11/29 22:41:40

前言

记录pyinstaller打包中的常用命令和报错。

详细的还是去官网自己看吧,这里只记录打包中常用到的命令。
如果我这里帮助不到你, 官网在这里:https://github.com/pyinstaller/pyinstaller

这两篇文章基本覆盖100%的报错了,
参考这里: https://hackmd.io/@quency/B1QmM5-OD
还有这里:https://www.pythonguis.com/tutorials/packaging-pyqt5-pyside2-applications-windows-pyinstaller/

知识点📖📖

安装模块

pip install pyinstaller

查看命令,如何使用

pyinstaller -h

在这里插入图片描述

在这里插入图片描述

注意图中圈出来的 What to genereteWindows and Mac OS X specific options,用的比较多的也就只有它们

options解释
-F打包成一个文件捆绑的可执行文件(默认打包为一个文件夹,不建议
-n、–name指定名称打包程序名称(默认值为脚本的基本名称)
–add-data添加文件或文件夹(注意看格式要求
-w不显示控制台窗口
-i指定.exe程序的图标

这些命令都可以组合使用!!!


实现

具体的命令使用以下命令进行查看

pyinstaller -h

打包要略

这里展示多种打包的方式,看似多种,实际上是一种。
通用的命令是

pyinstaller scripts.py

现在脚本名为demo.py,则输入 pyinstller demo.py,如下动图所示

打包成功后,(因为没有指定路径) 会在当前文件夹下生成一些文件和文件夹

  • 除了红色框选出来的文件外,其他的都是pyinstaller生成的。
  • 接下来就可以在 dist -> demo,找到 demo.exe,就可以运行了

在这里插入图片描述

基础打包

demo.py

# -*- coding: utf-8 -*-
for i in range(10):
    _str = input('输入任意内容: ')
    print(_str)

在命令行中输入:pyinstaller demo.py,等待打包完成;

接着打开 dist -> demo,找到 demo.exe,双击运行它,效果如下图所示

通过上面可以发现,默认生成的 .exe 文件,带有

  • 控制台窗口
  • .exe 执行程序在文件夹里面
  • 默认ico图标

值得注意的是,这里 .exe是无法脱离当前文件夹执行的,这个非常不好。;我更偏爱于生成单个可执行的 .exe,所以后面生成单个可执行文件。


单个执行文件 & 去除控制台窗口

有些程序,并不需要控制台窗口

上面说到,通过

  • -F:指定单个执行文件,
  • -w:去除控制台窗口

demo.py

  • 这段代码执行后会生成以当前年月日时分秒命名的.txt文件
import datetime

exec_time = datetime.datetime.now().strftime('%Y%m%d%H%M%S')

with open(file=f'{exec_time}.txt', mode='w', encoding='utf-8') as f:
    f.write('hello world!')
    

在命令行中输入:pyinstaller demo.py -F -w,等待打包完成;

接着打开 dist,找到 demo.exe,双击运行它,效果如下图所示

通过上面可以发现,文件没有是单个可执行文件,且不会弹出控制台窗口了。


指定ico图标 & 任务栏图标

.exe加上一个好看的图标,不使用默认的图标。.exe图标跟任务栏图标一致。

demo.py

# -*- coding: utf-8 -*-
for i in range(10):
    _str = input('输入任意内容: ')
    print(_str)

在命令行中输入:pyinstaller demo.py -F -i demo.ico,等待打包完成;

接着打开 dist,找到 demo.exe,可以看到.exe的图标和指定的ico是一致的。

  • demo.ico 在这里是一张16×16像素的ico图。

运行效果如下图所示:

  • 可以看到,任务栏的图标也是改变了的。

在这里插入图片描述

Qt 指定任务栏图标

譬如在打包 pyside2、pyqt5GUI程序时候,
有时候用上述的命令,.exe的图标并不会作用于任务栏,则使用以下的代码。

  • 将这段代码放置在最前面,然后使用setWindowIcon()设置好.exe的图标,后面任务栏的图标就会跟随 .ico了。
# 任务栏ico与工具左上角ico同步
try:
    # Only exists on Windows.
    from ctypes import windll
    myappid = 'mycompany.myproduct.subproduct.version'
    windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass

if __name__ == '__main__':
    basedir = os.path.dirname(__file__)
    # 窗口按照dpi拉伸
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)
    # 设置ico
    app.setWindowIcon(QtGui.QIcon(os.path.join(basedir, 'demo.ico')))
	...

后话

本次分享就到这里,🐱‍🏍🐱‍🏍
see you~

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

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

相关文章

【微服务】分布式下服务调用产生的问题之服务容错

服务容错前言模拟高并发场景压测测试服务雪崩效应常见容错方案隔离超时限流熔断降级常见的容错组件HystrixResilience4JSentinel总结前言 上篇中,我们了解了Ribbon的概念,也实现了基于Ribbon的服务调用,但同样也引发了另一个问题&#xff0c…

什么?“裸辞”一个月拿到13家offer,网友:你是在找存在感吗···

相信大家都知道天下分久必合、合久必分的道理,所以,一旦行业发展成熟,必定会重新洗牌,就像朝代的更替一样,去其糟粕,取其精华!现在互联网发展就是遇到了这样的瓶颈期,出现了衰退&…

【Mac】VSCode 更新1.73版本后JSTS代码跳转异常

前言 今天有小伙伴MacOS更新了VS Code版本后,说工程内的代码跳转全部异常了,没法正确跳转。搞了两三个小时没搞出来,找到了我,让我帮忙瞧瞧。排查下来发现这问题有点意思,故此记录一下。 问题 排查姿势 1. 提示没有定…

【数据结构】单链表

文章目录单链表链表的概念及结构链表的分类链表的实现动态申请一个节点创建链表单链表打印单链表尾插单链表尾删单链表头插单链表头删单链表 链表的概念及结构 概念:链表是一种物理存储结构上连续、非顺序的存储结构,数据元素的逻辑顺序 是通过链表中的…

代码中统一异常如何处理,才能让代码更清晰

背景 软件开发过程中,不可避免的是需要处理各种异常,甚至有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而且还影响代码的可读…

力扣刷题链表需要调试?一个简单的调试器帮你解决苦恼

本人在刷链表题时,由于是新手,所以老是过不去,需要调试,力扣会员开不起,在VS自己创建一个链表太麻烦 ,所以就有了今天这个 对于懒人的调节力扣链表便捷器 这个东西很简单,但是很有效 文章目录1.…

python数学建模--sympy三维图像绘制

目录问题引出库选择与绘制准备plot3d类api简介图像绘制与参数说明关键字参数绘图举例绘图的案例三角函数另一个三角函数问题引出 在求解二元函数最值的时候,我们不知道自己经过若干个步骤求出的结果是否正确,那么我们该怎么办呢?一种办法就是…

学完Python,不做程序员,只接兼职,哎,就是玩儿

现在这个时代,人人开始追求做斜杠青年,多方面开展副业,赚取几份工资。有很多朋友就抓住了Python的风口,靠着Python兼职月入一万。那么学完Python,有哪些可以做的兼职呢? 一、闲暇时间,接自由单…

2020年数维杯数学建模B题以家庭为单位的小规模多品种绿色农畜产品经营模式开发求解全过程文档及程序

2020年数维杯数学建模 B题 以家庭为单位的小规模多品种绿色农畜产品经营模式开发 原题再现: 在全球化疫情蔓延和国民生活水平稳步提高大形势下,居民对于绿色农畜产品的需求可能会迎来新的爆发期。传统大规模种植或养殖模式因其较大的风险、产品质量的非…

第四章 带头双向链表的讲解与实现

初阶数据结构 第一章 时间复杂度和空间复杂度 第二章 动态顺序表的实现 第三章 单向链表的讲解与实现 第四章 带头双向链表的讲解与实现 文章目录初阶数据结构前言一、什么是头节点(哨兵位)二、双向链表结点的定义三、接口函数的实现1、初始化2、尾插3、…

【附源码】计算机毕业设计java中国朝鲜族民族特色服务系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

超全,看完这份微服务架构与实践文档,微服务不再难

前言: 微服务近年来受到了极大的关注并成为趋势,不信的话可以查看 Google Trends。 可以看到从2014年开始人们对它产生了极大的兴趣,随着时间的推移,这一趋势仍在增长。 随着数字化转型的推进,越来越多的企业开始尝…

IntelliJ IDEA禁止某些文件夹indexing

IntelliJ IDEA禁止某些文件夹indexing 文章目录IntelliJ IDEA禁止某些文件夹indexing问题描述方法一:标记文件夹为Exclude方法二:.iml文件中手动加入excludeFolder节点方法三:直接加入IDEA忽略文件和文件夹列表问题描述 IDEA启动后&#xff…

计算机毕业设计(附源码)python在线答题系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

MySQL数据库——日志管理、备份与恢复

一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 二、数据…

【Tomcat】解决Tomcat服务器乱码问题

俩地方开展出现乱码的原因1、以startup.bat文件打开的服务器出现乱码2、在IDEA中运行Tomcat服务器出现乱码问题3、有关社区版IDEA如何开发JavaWeb项目出现乱码的原因 使用了错误的字符编码去解码字节流,所以出现乱码咱思维要清晰,就去找字符编码是否与其…

vue3.0微信活动推广分享项目-实现验证码登录功能

⭐️⭐️⭐️ 作者:船长在船上 🚩🚩🚩 主页:来访地址船长在船上的博客 🔨🔨🔨 简介:CSDN前端领域优质创作者,资深前端开发工程师,专注前端开发…

二、稀疏数组和队列

稀疏数组 1、基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以用稀疏数组来保存该数组。 2、处理方式 记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模数组中,从而缩小…

【OpenCV】红绿灯检测C++Demo实现

很久以来一直想实现红绿灯检测,今天它来了。 文章目录原理代码实现打包程序为exe原理 OpenCV好强,能够提取红绿灯的轮廓,并根据颜色空间判断红绿,不依赖深度学习算法也能做到可用的效果/demo。 红绿灯检测的基本步骤如下&#x…

20221103使用ffmpeg提取mp4视频的字幕

20221103使用ffmpeg提取mp4视频的字幕 2022/11/3 12:19 百度搜索: MP4 内置字幕 提取 https://www.6yxk.com/ruanjianjiaocheng/224526.html 提取mp4格式视频字幕的方法(工具) ffmpeg -i D:\temp\001.mp4 -map 0:s:0 sub1.srt 百度搜索: ffmp…