Pyinstaller
Pyinstaller将 Python 应用程序及其所有依赖项(python解释器,第三方模块等等,因此这也就注定了打包后的可执行文件比较大)捆绑到一个包中, 也就是我们俗称的打包。普通用户(即不是开发者)无需安装 Python 解释器或任何模块即可运行打包好的应用程序。 Pyinstaller支持 Python 3.6 或更新版本,并正确打包了主要的 Python 包,例如 numpy、PyQt、Django、wxPython 等。
一,安装
# 最新版本
pip installer pyinstaller
# 指定版本
pip installer pyinstaller==版本号
二,简单用法
pyinstaller -D run.py -i logo.ico
run.py: 要打包的文件/项目入口
-D: 打包成多个文件(不指默认就是打包多个文件)
-F: 打包成一个单独的文件(如果你的代码都写在一个py文件的话就可以用,如果是多个就不要用)
-W: 程序运行时不显示命令行窗口(仅对windows有效)
-i logo.ico: 指定可执行文件图标路径,格式必须为ico
# 打包后会在当前文件夹生成build(临时文件夹)和dist(打包后的项目存放文件夹)
# 如果图标没有及时刷新显示的解决办法,在cmd终端敲一下命令
windows10: ie4uinit.exe -show
windows7/windows8: ie4uinit.exe -ClearIconCach
三,进阶用法
1,生成spec配置文件
pyi-makespec run.py
# run.py项目入口文件,执行这条命令后会在当且前目录生成run.spec配置文件
2,配置spec
# 1,配置需要额外打包的文件
# datas = [('源地址','目标地址'),('源地址','目标地址')...] 可以用相对路径,要用双斜杠防止转义
a = Analysis(
['run.py'],
pathex=[],
binaries=[],
datas=[('db\\setting.json','db'),('db\\sounds','db\\sounds'),('imgs','imgs')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
# 2,配置可执行文件图标icon,是否显示终端命令行console
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='run',
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='imgs\\logo.ico',
)
# 3,加密编译(防止可执行文件被反编译)
# 加密编译需要依赖第三方库: tinyaes 安装: pip install tinyaes
# 在配置文件中添加
block_cipher = pyi_crypto.PyiBlockCipher(key='abc123')
# 4,打包
pyinstaller run.spec
# 5,打包后会在当前文件夹生成build(临时文件夹)和dist(打包后的项目存放文件夹)