600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【踩坑日记(一)】: Pyinstall 打包.py文件 生成exe可执行文件

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

时间:2023-11-26 17:16:39

相关推荐

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

文章目录

Pyinstall 打包.py文件 生成exe可执行文件如何入坑&出坑Analysis 实例其他实例常用参数参考文档:Pyinstall 官方手册

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

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

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

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

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

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

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

pyinstall 工具包打包的正确步骤1、生成配置文件:pyi-makespec [-w] 主文件(一般是main.py) 其他文件1 其他文件22、补充配置文件:主要确认是否有文件没有写进打包范围,打包路径是否正确,静态文件路径有没有配好,也可以指定生成的文件名3、执行配置文件:pyinstaller xxx.spec4、打包成功,去.\\工程文件\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的添加暂时没用到过其他的(跨平台部署也没用到过),如果后续有用到的其他属性,会在这里继续更新~

其他实例

常用参数

参考文档:Pyinstall 官方手册

Pyinstall官方手册

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。