PyInstaller实战:深度学习模型与依赖资源一体化打包指南
1. 为什么需要打包深度学习模型?
最近几年,深度学习模型的应用越来越广泛,从图像识别到自然语言处理,各种AI应用层出不穷。但很多开发者都会遇到一个头疼的问题:辛辛苦苦训练好的模型,怎么才能让它在别人的电脑上顺利运行?特别是当目标机器没有Python环境,或者缺少某些依赖库的时候,这个问题就更加棘手了。
我遇到过不少这样的情况:在开发机上跑得好好的模型,一到客户那里就各种报错。要么是缺少某个库,要么是路径不对,甚至有时候连Python版本都对不上。这时候,PyInstaller就成了我们的救星。它能把Python脚本和所有依赖打包成一个独立的exe文件,让模型在任何Windows电脑上都能运行,不需要安装Python环境。
不过说实话,打包深度学习模型可比打包普通Python脚本复杂多了。除了代码本身,我们还要考虑模型权重文件(.pth)、配置文件、自定义模块等各种资源。更麻烦的是,很多深度学习框架(比如PyTorch)还会依赖一些动态链接库(DLL),这些都需要一并打包进去。接下来,我就结合自己的实战经验,详细说说怎么用PyInstaller搞定这些难题。
2. 环境准备与基础配置
2.1 创建专用虚拟环境
打包深度学习模型的第一步,就是创建一个干净的虚拟环境。这一点非常重要,因为深度学习项目通常依赖很多库,如果不隔离环境,打包出来的exe会包含大量不必要的文件,体积可能达到几个GB。
我推荐使用conda来管理虚拟环境,因为它能很好地处理深度学习框架的依赖关系。下面是我常用的命令:
conda create --name model_pack python=3.8 conda activate model_pack这里我特意选择了Python 3.8,因为PyInstaller的最新版本对Python 3.7的支持不太好。在实际项目中,我就遇到过因为Python版本不兼容导致打包失败的情况。升级到3.8后,问题就迎刃而解了。
2.2 安装必要依赖
在虚拟环境中,我们需要安装项目所需的所有依赖。对于深度学习项目,通常包括PyTorch/TensorFlow等框架,以及项目特定的库。这里有个小技巧:先安装框架的主包,再安装其他依赖,可以减少版本冲突。
pip install torch torchvision # PyTorch相关 pip install pyinstaller # 打包工具 pip install -r requirements.txt # 项目其他依赖安装完依赖后,一定要先在本地测试模型能否正常运行。我建议写一个简单的测试脚本,确保从模型加载到推理的整个流程都没问题。如果本地都跑不通,打包就更不可能成功了。
3. 使用PyInstaller打包多文件项目
3.1 生成和修改spec文件
很多教程会教你直接用pyinstaller -F main.py来打包,但对于深度学习项目,这种方法基本都会失败。我们需要使用更灵活的spec文件方式。
首先生成spec文件:
pyi-makespec main.py这会生成一个main.spec文件,我们需要重点修改其中的Analysis部分。下面是一个典型的深度学习项目配置:
a = Analysis( ['main.py', 'models/custom_model.py', 'utils/data_loader.py'], # 所有Python文件 pathex=['D:/projects/my_model'], # 项目根目录 binaries=[], # 二进制文件 datas=[ ('weights/model.pth', 'weights'), # 模型权重 ('configs/settings.yaml', 'configs'), # 配置文件 ('data/labels.txt', 'data') # 其他数据文件 ], hiddenimports=['torch', 'numpy', 'PIL'], # 需要显式导入的库 hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=None, noarchive=False, )这里有几个关键点需要注意:
datas字段用于指定所有非Python资源文件,格式是(源路径, 目标相对路径)。打包后,这些文件会被放在exe同级目录的指定子目录中。hiddenimports用于指定那些PyInstaller可能无法自动检测到的依赖。- 所有路径最好使用绝对路径,避免打包时找不到文件。
3.2 处理路径问题
打包后,程序的工作目录会发生变化,所以代码中所有文件路径都需要做相应调整。我建议使用以下方式加载资源:
import os import sys def resource_path(relative_path): """ 获取打包后资源的绝对路径 """ if hasattr(sys, '_MEIPASS'): base_path = sys._MEIPASS else: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) # 加载模型 model_path = resource_path('weights/model.pth') model = torch.load(model_path)这个resource_path函数在开发环境和打包后都能正确工作。sys._MEIPASS是PyInstaller创建的临时目录,打包后的资源文件会被解压到这里。
4. 解决常见打包问题
4.1 处理缺失的DLL文件
深度学习框架通常依赖很多系统DLL,打包时经常会遇到"找不到xxx.dll"的错误。我常用的解决方法是:
- 用Everything搜索缺失的DLL,通常能在Python安装目录或CUDA目录下找到。
- 将找到的DLL文件放在项目的根目录下,然后在spec文件的
binaries字段中指定:
binaries=[('cudnn64_8.dll', '.'), ('cublas64_11.dll', '.')],- 对于复杂的依赖关系,可以使用Dependencies工具(一个开源DLL分析工具)查看DLL的依赖树,把缺失的都补上。
4.2 减小打包体积
深度学习模型打包后体积往往很大,这里有几个优化技巧:
- 在spec文件中设置
noarchive=True,这样PyInstaller不会把所有的Python文件打包成一个大的归档文件,便于调试。 - 使用UPX压缩(需要先下载UPX工具):
exe = EXE( ... upx=True, ... )- 排除不必要的库:
excludes=['tkinter', 'matplotlib', 'scipy'],4.3 处理动态加载的模块
有些库(如PyTorch)会动态加载模块,PyInstaller可能检测不到这些依赖。这时候需要在hiddenimports中显式指定:
hiddenimports=[ 'torch', 'torchvision', 'torch.nn', 'PIL', 'PIL.Image', 'numpy', 'mmcv', 'mmcv._ext' # 如果是用mmcv的话 ],如果打包后还是缺少某些模块,可以查看PyInstaller生成的warn文件,里面会列出所有未找到的依赖。
5. 高级打包技巧
5.1 打包JIT编译的模型
如果你使用了PyTorch的JIT编译(torch.jit.trace或torch.jit.script),打包时需要特别注意:
- JIT编译的模型会依赖特定的PyTorch版本和CUDA版本,最好在目标机器上重新编译。
- 可以在运行时检查环境,必要时重新编译模型:
if not os.path.exists('model_compiled.pt'): model = ModelClass() model.load_state_dict(torch.load('model.pth')) traced_model = torch.jit.trace(model, example_input) traced_model.save('model_compiled.pt')5.2 处理配置文件
深度学习项目通常有很多配置文件(如YAML、JSON),打包后这些文件的位置会变化。我推荐使用以下结构:
project/ ├── configs/ # 开发时的配置文件目录 │ └── settings.yaml └── src/ └── main.py在spec文件中:
datas=[('configs/settings.yaml', 'configs')],然后在代码中这样加载配置:
config_path = resource_path('configs/settings.yaml') with open(config_path) as f: config = yaml.safe_load(f)5.3 多进程支持
如果你的模型推理使用了多进程(如PyTorch的DataLoader),需要在打包时添加多进程支持:
exe = EXE( ... runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug=False, bootloader_ignore_signals=False, strip=False, upx=True, name='model_app', debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None, append_pkg=False, optimize=0, bootloader_ignore_signals=False, name='model_app', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, uac_admin=False, uac_uiaccess=False, asadmin=False, debug_bootloader=False, multipackage=None, append_pkg=False, optimize=0, icon=None, version_file=None, manifest=None, resources=None, ascii=False, clean_build=False, silent=False, onefile=False, windowed=False, runtime_tmpdir=None,