【踩坑日记(一)】: Pyinstall 打包.py文件 生成exe可执行文件

article/2025/10/11 15:41:45

文章目录

Pyinstall 打包.py文件 生成exe可执行文件

原本认为很轻松的事情,结果花了近2个小时才搞定,值得记录下踩的坑。

首先粗略小结一下这个python工具包的基本工作原理

一只测试媛的笔记梳理

就是说,如果需要这个工具包帮忙打包一下,形成.exe 文件,咱就只需要关注一件事:.spec 配置文件配对了没。

基本上,只要这个文件里路径配对了,生成可执行文件,不在话下😂

花花网络迷人眼,搜索引擎送来的坑都给我放哪儿了呢?就是文件路径的配置上!

不过咱们先看正确步骤(不浪费时间,有闲心的可以接着看步骤后的“如何出坑”):

pyinstall 工具包打包的正确步骤
1、生成配置文件:pyi-makespec [-w] 主文件(一般是main.py) 其他文件1 其他文件2
2、补充配置文件:主要确认是否有文件没有写进打包范围,打包路径是否正确,静态文件路径有没有配好,也可以指定生成的文件名
3、执行配置文件:pyinstaller xxx.spec
4、打包成功,去.\\工程文件\dist 文件夹下 可以找到你的可执行文件,双击运行~

如何入坑&出坑

搜索引擎提供的大部分方法都是一把梭哈的,就是直接给你一个超长的命令行,告诉你应该填的命令+对象

但实际上,你的打包情况是复杂的,比如,多个文件可能是跨多model的,或者某个文件的层级很深,跟主文件根本不在一个目录

配置文件 .spec 是结构性的文件,配置项都给你准备好了,正常的思路应该是去了解配置文件允许你填什么/要求填什么,这决定它是根据什么条件去给你打包的,这就跟我们写程序是一样的,我们需要根据工具提供的参数来使用,否则就是在测bug了,并且大部分还是主观意义下的bug,这显然毫无意义,但大部分搜索引擎提供的结果却基本都是如此,对基本使用原理给的很模糊:

比如,直接告诉你,根据xxx命令一条命令行,就能大力出奇迹

再比如,有些连参数作用都没搞明白的,就开始瞎教,说配某个参数就能执行,比较典型的是[-p] 参数的用法,这个参数明明是用来配用到的模块的路径的,对应的是配置文件里的pathex 选项,大部分文章却说这是配其他文件的,这样的指导显然不能让使用者据此得到正常的期望结果。

所以,还是先从配置文件本身了解吧:

# -*- mode: python ; coding: utf-8 -*-
#兼容的写法block_cipher = None
'''
Analysis类的实例,主要分析.py文件的依赖项。
如,第三方库,以及import模块。
scripts:py文件
pure :纯python模块,包括程序的代码文件本身
binaries:需要的二进制文件
datas:非二进制文件,例如icon
'''
a = Analysis(['main.py', 'OOP_GUI_CREATE_TEST_DATA.py', 'OOP_test_date_create.py'],# 你要打包的文件名,如果偷懒,可以和main文件放一个目录# 不在一个目录的时候,要写绝对路径pathex=[],#用来存放用到模块路径,例如PYTHONPATHbinaries=[],#添加二进制文件,也是一个列表,定义方式与datas参数一样datas=[],#非二进制文件hiddenimports=[],#隐式导入的模块,比如在__import__、eval等语句中导入的模块,这些模块Pyinstall是找不到的,需要手动指定导入。hookspath=[],#hookspath,指定额外的hook文件(可以是py文件)的查找路径。hooksconfig={},runtime_hooks=[],#指定自定义的运行时hook文件路径(可以是py文件)excludes=[],# 指定可以被忽略的可选的模块或包。win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False,
)pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='main',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='main',
)

Analysis 实例

除了scriptsde 的添加,datas的添加暂时没用到过其他的(跨平台部署也没用到过),如果后续有用到的其他属性,会在这里继续更新~

属性解释
scripts必填,由脚本文件名组成的list
pathex选填,spec文件路径,通常是跨平台才会用这个
binaries选填,二进制文件
datas选填,非二进制文件
hiddenimport选填,如果用了些隐式的模块,才需要填这个,因为Pyinstall不能主动帮你加载隐式model
hookspath选填,hook或者hook-modules路径
hooksconfig选填,hook或者hook-modeles的配置文件
excludes选填,模块或包名,不能填路径名,这些包/模块将会被忽略,不打包
runtime_hooks选填,用作用户运行时可选hook脚本列表(填文件名)
cipher添加 pyz_crypto.PyiBlockCipher 类的可选实例(使用提供的密钥)。
win_no_prefer_redirectsTrue,在搜索 Windows SxS 程序集时不希望遵循版本重定向。默认False
win_private_assembliesTrue, 则将所有捆绑的 Windows SxS 程序集更改为私有程序集以强制执行,默认False
noarchiveTrue,则不要将源文件放在存档中,而是将它们作为单独的文件保存。默认False

其他实例

PYZ 实例.pzy文件,包含pure中的所有Python模块
EXE 实例处理Analysis 和PYZ的结果,用来生成最后的exe可执行文件
COLLECT 实例用于创建输出目录,只有-D命令下才会实例化,-F不会生成目录

常用参数

参数名称含义
-h查看帮助信息:pyinstaller -h
-p DIR, --paths DIR-p DIR 或者 --paths DIR 搜索导入的路径(例如使用 PYTHONPATH)。 允许多个路径,由 ; 分隔,或多次使用此选项。 等效于在规范文件中提供 pathex 参数。
-F, --onefile创建一个单一文件捆绑的可执行文件。
-D,–onedir创建一个包含可执行文件的单文件夹包(默认)
-n NAME, --name NAME分配给捆绑的应用程序和规范文件的名称(默认值:第一个脚本的基本名称)
–clean在构建之前清理 PyInstaller 缓存并删除临时文件。
pyi-makespec mainNAME.py单纯构建一个spec配置文件

参考文档:Pyinstall 官方手册

Pyinstall官方手册


http://chatgpt.dhexx.cn/article/6IKQ3WmA.shtml

相关文章

Ubuntu 16.04 安装 Pyinstall

Ubuntu 16.04 安装 Pyinstall 预装环境 python3 version:3.5pip version:8.1 报错如下: 首先直接安装 pyinstall 报错,pip 版本过低,要升级版本使用 提供的命令升级 pip,但是开始套娃,一直循…

pyinstall 打包报错

关于使用pyinstaller 打包报错 我的python安装位置为 安装位置/usr/local/python3 关于我的报错环境属于linux 我的pyinstaller 是使用pip 安装的 pip install pyinstaller 在使用pycharm 打包的时候,报错 打包就告诉我缺少什么 关于python的 iso包 我当时有全磁盘搜索该文…

pyinstall exe打包详解

在学习和工作之中,想制作一些小工具,用python秃了一个晚上,拿到公司,发现要安装python才能用,看别人的博客看不懂,别急,一篇搞定。 一、pyinstaller安装 pyinstaller 是一个python库&#xff0…

pyinstall加密打包

这个工具打包真的是挺省事的,但是一旦涉及保护源码,那么原来简单的打包就不够用了。轻易就能被人反编译。 工具自然也是要进步的,现在pyinstall支持加密打包了。 虽然我没查到他加密的原理是什么,但是应该比原来破解增加了一些难度…

PyInstall的安装,使用,以及最后打包成一个exe文件

首先PyInstall安装 pip3 install pyinstaller -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com 打包常用命令 pyinstaller -w -F test.py -w 表示运行exe文件后不出现cmd命令窗口 -F 表示打包成一个单独的exe文件 使用命令后会生成两个文件夹。 …

WIFI传输速度测试

环境: 1.A电脑共享文件,有线1000M,空载,正常机械硬盘,硬盘速度120M/S 2.B电脑从A拷贝数据,USB1.5米延长线接的网卡,USB2.0,WIFI 5G 600M,空载 3.拷贝文件,阿凡…

诺基亚N1 WIFI感叹号消除

Android Captive Portal Server 安卓系统wifi连接后,与CPS服务器通信,检测是否连接到互联网,当不能默认的CPS时就会有感叹号。 通过ADB设置可以消除这个感叹号。 下好ADB之后,打开ADB文件夹,按住shift鼠标右键&…

WIFI理论速度计算

参考: https://cn.ui.vmall.com/thread-1349237-1-4.html 以下是各个WIFI版本的最大吞吐量表 wifi802.11802.11a802.11b802.11g802.11n802.11ac最大吞吐量(Mbps)25411546006928 强调下,MbpsMbit/s即兆比特每秒(1,000,000bit/s)不…

Android 修改wifi阀值,6种简单方法使WiFi网络提速

6种简单方法使WiFi网络提速 导语:不给力的WiFi连接使得无线上网给人的感觉像是回到了拨号时代。以下是小编精心整理的有关电脑网络知识,希望对大家有所帮助。 1、升级过时的路由器 并非所有人都愿意花钱解决WiFi网速慢的问题,但许多人都需要这么做。最近数年路由器技术取得了…

WIFI 常识

DSSS (Direct Sequence Spread Spectrum)直接序列扩频 FHSS,跳频技术 (Frequency-Hopping Spread Spectrum) FHSS和DSSS比较 跳频扩频(FHSS): 跳频扩频(FHSS)技术是通过“伪随机码”的调制,信息的载波受…

Win10系统正确设置MTU值加快WIFI速度的方法

MTU是Maximum Transmission Unit缩写,中文名:最大传输单元。 工具/原料 硬件:电脑 操作系统:Windows 10 方法/步骤 第一步:查询自己电脑的MTU值 右键【开始】–【命令提示符(管理员)】; netsh interface …

WiFi的真实速率

“虽然许多路由器厂商宣称自家的路由器可以达到极高的速率,但实际上用户购买回去用起来却很难达到很快的速率。因为WiFi传输速率是符合木桶效应的,许多时候速率受限于接入路由器的WiFi终端性能。只有全链路能够达到的速率,才是使用者感受到的…

esp32测试wifi速率

一、下载demo, demo路径esp-idf\examples\wifi\iperf 注意:运行可能会报分区表错,idf.py menuconfig修改下flash为DIO模式再试; 二、测试 1、上电运行demo,PC和esp32连接同一个wifi热点; 2、执行idf.p…

WIFI6速率

WiFi 6在160MHz信道宽度下,单流最快速率为1201Mbit/s,理论最大数据吞吐量9.6Gbps。跟前五代比一比:第一代 802.11b(Wi-Fi 1),最快11Mbit/s第二代 802.11a(Wi-Fi 2),最快5…

提高企业WiFi速度的快速简便的方法—Vecloud微云

WiFi已成为必不可少的商业工具。连接缓慢或不可靠都会对员工的工作效率和客户服务产生不利影响。 但是,如何确保充分利用无线互联网解决方案呢? 以下是一些提高组织中的WiFi速度的快速简便的方法。 零成本提升WiFi速度的方法 在考虑附有成本的解决方案…

SDIO WiFi问题排查

SDIO WiFi问题排查: SDIO WiFi问题排查 | DDNotes背景 Platform: RK3399 OS: Android7.1.2 Kernel: v4.4.103 问题:Android系统没法打开wifi,10几台机器,有1,2台可以,其他要么一直不…

手机wife修改dns服务器,简单几步DNS设置,让你手机的WiFi速度提升几倍

对于一个手机不离手的人,网速对他/她的重要性不用多说,而WiFi无疑是使用场景最多的连接方式,它的连接速度、下载/上传速度将直接影响我们的使用体验,小编在使用手机的过程中测试了很多针对WiFi的提速方法,要论效果&…

wifi提速技巧:十大方法瞬间提升wifi速度

手机wifi速度慢真是很让人苦恼,有什么有效的wifi提速方法吗?当然有啦~绿茶小编今天就为大家带来了提升wifi速度的十大方法,能激活wifi表现,提升无线网络哦,快来看看吧! 十大方法瞬间提升wifi速度: 每当我们谈到要提高…

手机网速正常电脑很慢_路由器WiFi速度正常,但电脑和手机上网速度慢怎么办?...

不少用户遇到这样的问题,路由器WiFi速度正常,但电脑和手机上网速度慢怎么办?其实是因为你的电脑和手机的缓存需要清理了。 电脑WinR组合键之后输入 services.msc,进入Windows服务,在右侧找到“DHCP Client”和“DNS Cl…

WIFI速率计算

WIFI能够支持的最大速率的计算公式: MIMO数 x 1/(symbolGI) x bit/子载波 x 编码率 x 有效子载波数量 1 天线或信号流的数量 通俗讲,就是天线的数量。以华为的AP4050DN为例,2.4G是MIMO 2*2,在计算最高建链…