Python打包exe文件——pyinstaller模块
目录
- Python打包exe文件——pyinstaller模块
- 介绍
- 安装
- 打包
- 文件夹模式打包
- 单文件模式方式
- SPEC打包(推荐)
介绍
当要在没有python环境的设备上运行python文件时就可以将环境变量全部封装成exe文件发送给对方,此时就可以使用打包模块pyinstaller
安装
pip install pyinstaller
打包
cd到需要打包的目录下
文件夹模式打包
Pyinstaller的默认打包方式,生成的是一个文件夹,包含build
,dist
和fileren.spec
、_pycache_
- build文件夹用于存储日志文件
- dist文件夹储存可执行文件即相关依赖
- __pycache__文件夹里是Python版本信息
- fileren.spec打包的配置文件,可以配置依赖资源
除了dist文件夹,其它都可以删除
这种模式下,需要把整个dist文件夹发给别人才能运行
Pyinstaller -F Test.pyw
单文件模式方式
该方式只适用于单文件打包,如果你有多个py文件则不能用,打包后只会产生一个dist文件,里面也只有一个执行文件,这个执行文件直接发给别人即可运行
Pyinstaller -F Test.pyw
SPEC打包(推荐)
这种打包方式的好处就是不用每次都重新指定文件路径,只需将.spec
配置文件进行读取就能生成新的exe文件
Pyinstaller Test.spec
不管使用哪种打包方式,在你目录下都会生成一个spec文件
大致内容如下
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['Test.pyw'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='Test',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
.spec
文件中各个参数的含义如下:
参数 | 含义 |
---|---|
Analysis | 分析器,用于指定分析的目标文件、路径等 |
pathex | 指定搜索路径 |
binaries | 二进制文件列表 |
datas | 数据文件列表 |
hiddenimports | 隐藏导入模块列表 |
hookspath | Hook 脚本路径 |
hooksconfig | Hook 配置 |
runtime_hooks | 运行时 Hook |
excludes | 排除模块列表 |
noarchive | 是否生成归档文件 |
PYZ | 包装器,用于生成 PYZ 文件 |
EXE | 生成可执行文件的配置参数 |
pyz | PYZ 文件 |
a.scripts | 脚本列表 |
a.datas | 数据文件列表 |
name | 生成的可执行文件名 |
debug | 是否生成调试信息 |
bootloader_ignore_signals | 是否忽略启动器信号 |
strip | 是否剥离符号信息 |
upx | 是否使用 UPX 压缩 |
upx_exclude | 排除不压缩的文件 |
console | 是否为控制台应用程序 |
disable_windowed_traceback | 禁用窗口式回溯 |
argv_emulation | 是否模拟命令行参数 |
target_arch | 目标架构 |
codesign_identity | 签名标识 |
entitlements_file | 权限文件 |