第一步 生成spec文件,方便多个文件打包
对某个文件,生成spec
pyi-makespec main.py -i top.ico
然后你就会在目录中看到main对应的spec文件
其中文件内容为
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['Entry_v2.py','Fmain.py],#一个脚本列表,可以传入多个py脚本,常用
pathex=[],#项目需要从什么地方导入自定义库,就是不在当前目录下的其他模块, 常用
binaries=[], # 添加二进制文件,没怎么用过
datas=[], # 项目需要用到什么数据,比如图片,视频等,格式为datas=[('所在路径','打包后的路径')],常用
hiddenimports=[], # 需要隐式导入的模块,比如在__import__、imp.find_module()、exec、eval等语句中导入的模块,这些模块PyInstaller是找不到的,需要手动指定导入,这个选项可以使用多次
hookspath=[],# 指定额外hook文件(可以是py文件)的查找路径,这些文件的作用是在PyInstaller运行时改变一些Python或者其他库原有的函数或者变量的执行逻辑(并不会改变这些库本身的代码),
hooksconfig={},#hook的配置文件
runtime_hooks=[],#运行时hook文件路径
excludes=[],# 可以被忽略的可选的模块或包,就是你python中没用到的包,可以不进行打包处理
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='Entry_v2',#名称
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,#是否显示命令行
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['top.ico'],#图标
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='Entry_v2',
)
第二步进行打包
pyinstaller main.spec
运行该指令,进行打包处理,就会在当前目录出现
这两个文件,在dist文件夹中,就会出现可运行文件exe。
dist文件最终生成的可执行文件或打包后的应用程序的输出目录
build文件就是在打包处理中产生的中间文件,可以删除。
最终只关注dist文件即可。