-
run.exe:已经编译好的文件,负责解压exe中的资源包,创建运行环境
-
pure:pyi分析用户程序及其依赖库,得到的所有需要导入的模块,但不包括dependencies
-
dependencies:pyi本身,包含5个文件
-
scripts:用户编写的脚本
-
binary:有些python库使用了非python库,binary是这些库的集合,包括
.dll和
.pyd
-
zipfiles:一般为空
-
zipped_data:一般为空
-
datas:各种资源,包括pyi识别出来的和用户主动添加的
exe格式(onefile)
-
exe = run.exe + pkg
-
pkg(CArchive) = pyz + dependencies + scripts + binary + zipfiles + datas + python36.dll
-
pyz(ZlibArchive) = pure + zipped_data
exe格式(onedir)
-
exe = run.exe + pkg
-
pkg(CArchive) = pyz + dependencies + scripts
-
pyz(ZlibArchive) = pure + zipped_data
各文件存储格式说明
-
pure:将module加载到内存,用mashal处理,用zlib压缩后存储。
-
如果module本身是py,存储的是import后的内存模型
-
如果module本身是pyd,存储的是dll加载后的内存模型
-
dependencies:同pure
-
binary:zlib压缩后存储
-
datas:同binary
PyInstaller exe(onefile)执行过程
-
启动exe
-
解压exe中的pkg到临时目录
-
启动
子进程
并等待完成
-
删除临时目录,清理环境
-
设置各种环境变量,初始化python环境
-
直接运行dependencies和scripts
-
返回主进程
exe(onefile)和exe(onedir)比较
-
onedir存储的数据没有压缩,最终文件较多较大;onefile 存储的各种数据经过压缩,最终的包较小。比例大约为3:1
-
对任一python模块,两者都没有直接存储pyc或源码,而是以pyz的形式存储,并且不会解压到磁盘
-
任何python import语句都经过特殊处理,优先从pyz中加载模块。这一操作完全在内存中实现
-
如果想要优化大小,onedir模式只需要删除无用的文件就可以,onefile模式需要提供合适的命令行参数。
关于CArchive和ZlibArchive
-
CArchive和ZlibArchive是PyInstaller内部的两种文件格式
-
CArchive的文件扩展名是.pkg
-
ZlibArchive的扩展名是.pyz
-
CArchive内部包含ZlibArchive,在执行生成的exe时,CArchive里面的大多数内容会被解压到临时目录,但ZlibArchive仍然存在于内存中
-
ZlibArchive中存储的是用户程序依赖的python第三方库,当程序执行到import somemodule语句时,exe会从ZlibArchive中搜索somemodule,直接载入到python解释器中,没有任何硬盘操作。
PyInstaller生成的exe(onefile)文件结构exe = run.exe + pkgpkg(CArchive) = pyz + dependencies + scripts + binary + zipfiles + datas + python36.dllpyz(ZlibArchive) = pure + zipped_data+++++++++++++++++++++...
参照:https://blog.csdn.net/m0_37477175/article/details/82146996
我采用的是
pyinstaller
打包,
第一步,采用
pyinstaller
打包会
生成
对应的.spec
文件
。
第二步,编辑对应的.spec
文件
,将需...
Python
Pyinstaller
打包
exe
文件
记录
pyinstaller
-F 数据
结构
转建表语句_V3.0.py -w -n JJ工具_建表SQL自动
生成
(数据
结构
版) -i jj_sjjg.ico
-F:
生成
单个
文件
,无法查看内容
-D:
生成
个
文件
目录,便于修改
-w:跳过windows console窗口
-n:更改
生成
的
exe
文件
或
文件
目录名字
- i:修改图标
多个.py
文件
和多个打包命令格式如下:
pyinstaller
[主
文件
] -p [其他
文件
1] -p [其他
文件
2] --hidden-import [自建模块1] --hidden-import [自建模块2]
根据上面的
文件
结构
打包命令如下
pyin...
Python进阶(四十七)-python3使用
pyinstaller
实现将py
文件
打包成
exe
文件
前言 py
文件
通常需要运行在Python编程坏境中,而可执行
exe
文件
更方便。
之前看过若干博文在python2环境下使用
pyinstaller
将py
文件
打包成
exe
文件
,因为之前
pyinstaller
不支持python3。现在
pyinstaller
支持python3,此篇博文即是在python
2、输入【F:】进入F盘
3、输入【cd cs01】进入F盘的cs01
文件
夹(里面存放着要打包的xxx.py
文件
)
4、pyinstall -F xxx.py (直接打包成
exe
文件
,没图标ico,会有黑色窗口)
5、
pyinstaller
-F -i test.ico test.py (打包成
exe
文件
,带有test.ico图标,会有黑色窗口)
6、
pyinstaller
-w -i aa.ico -F aaa.py (打包成
exe
文件
,带aa.ico图标,没有黑色窗口)
7、pyinst
考虑到代码、数据的隐私安全,所以我们就需要使用
PyInstaller
将自己的运行主程序打包起来,从而创建得到独立应用(自包含该应用的依赖包)。最重要的是可以使用
PyInstaller
将 Python 程序
生成
可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行。
2.安装
pyInstaller
安装 pyInstalle...
PyInstaller
是一个用来将Python程序打包成可执行
文件
的工具。要使用
PyInstaller
生成
macOS可执行
文件
,首先需要在macOS系统中安装
PyInstaller
。安装完成后,使用命令行进入到Python程序所在目录,并输入命令:
pyinstaller
xxx.py
其中xxx.py是你要打包的Python程序
文件
名。
PyInstaller
会自动分析程序依赖关系,并将所有需要的
文件
打包到一个可执行
文件
中。
生成
的可执行
文件
位于dist目录中。