为了在使用pyinstaller将多个文件添加到你的EXE文件中,最好的方法是将文件列表添加到你的应用程序规格(spec)文件中。
import glob
a = Analysis(['application.py'],
pathex=['D:\\MyApplication'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += [("assets\\"+file.split("\\")[-1], file, "DATA") for file in glob.glob("D:\\MyApplication\\assets\\*")]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='MyApplication',
debug=True,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
基本上,glob会读取assets文件夹中的所有文件,这里我只是使用列表推导式将所有要包含的文件附加到一起。
a.datas += [("assets\\"+file.split("\\")[-1], file, "DATA") for file in glob.glob("D:\\MyApplication\\assets\\*")]
这行代码将assets文件夹中的所有文件添加到你的应用程序的assets文件夹中。
这个解决方案对我有效。