目录
为什么要使用 --add-data
程序里文件格式有很多种:
- 源代码 .py
- 图片格式 .png .jpg .ico 等
- 配置文件 .ini .json .xml等
- 其他可执行文件 .bin .exe等
- 模型文件 .pth 等
- 说明文档 .txt .md等
注意:
- 除了.py之外,其他格式不会编译。
- 除了.py之外,其他格式若要打包进去,需要使用 --add-data 处理,或者手动拷贝(嫌麻烦,你每次都能记住?)
如何使用 --add-data
用法:pyinstaller x.py --add-data="源地址;目标地址"。 windows以;分割,linux以:分割
例如:将 config 目录的所有文件打包到目标的 config 文件夹(不存在会自动创建)下
pyinstaller x.py --add-data ".\\config\\*;.\\config"
可使用多次 --add-data
例如:
pyinstaller x.py -n Demo2.0.3 --key !@)v -i "res\logo.ico"
--add-data=".\*.txt;." --add-data=".\*.json;." --add-data="res\*.*;.\res"
--add-data="dist\models\*.*;.\models"
.spec文件里如何使用 --add-data
# -*- mode: python ; coding: utf-8 -*-
block_cipher = pyi_crypto.PyiBlockCipher(key='!@)v')
a = Analysis(['x.py'],
pathex=['D:\\Miniconda3\\envs\\cuda11\\Lib\\site-packages', 'D:\\project\\demo'],
binaries=[],
datas=[('.\\*.json', '.'), ('res\\*.*', '.\\res'), ('dist\\models\\*.*', '.\\models')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
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='Demo2.0.3',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False , icon='res\\logo.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='Demo2.0.3')
Analysis里的datas就是使用 --add-data对应的地方!
一个[]里,有多个(),每个()以逗号隔开,左边是程序路径,右边是放入打包里的路径!