-- mode: python ; coding: utf-8 --

import sys import os from PyInstaller.utils.hooks import collect_all, collect_submodules, collect_dynamic_libs

1. 深度收集 usd_convert_cad 和 pxr (OpenUSD) 的所有数据、二进制 DLL/PYD 和子模块

datas_cad, binaries_cad, hidden_cad = collect_all(‘usd_convert_cad’) datas_pxr, binaries_pxr, hidden_pxr = collect_all(‘pxr’)

组合所有数据和二进制文件

datas = datas_cad + datas_pxr binaries = binaries_cad + binaries_pxr

2. 显式补充 OpenUSD 底层的 C++ 扩展模块(重点是 _tf, _usd, _sdf 等)

hiddenimports = hidden_cad + hidden_pxr + [ ‘pxr’, ‘pxr.Tf’, ‘pxr.Tf._tf’, ‘pxr.Gf’, ‘pxr.Gf._gf’, ‘pxr.Sdf’, ‘pxr.Sdf._sdf’, ‘pxr.Usd’, ‘pxr.Usd._usd’, ‘pxr.UsdGeom’, ‘pxr.UsdGeom._usdGeom’, ‘pxr.UsdShade’, ‘pxr.UsdShade._usdShade’, ‘pxr.Vt’, ‘pxr.Vt._vt’, ‘pxr.Ar’, ‘pxr.Ar._ar’, ‘omni’, ‘cad2usd.converter’, ‘cad2usd.app’ ]

block_cipher = None project_python_path = os.path.abspath(os.path.join(SPECPATH, ‘python’))

a = Analysis( [os.path.join(SPECPATH, ‘python’, ‘cad2usd’, ‘app.py’)], pathex=[SPECPATH, project_python_path], binaries=binaries, datas=datas, hiddenimports=hiddenimports, hookspath=[], hooksconfig={}, 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, a.binaries, a.zipfiles, a.datas, [], name=‘USD_CAD_Batch_Converter’, debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=False, # 如果打包后运行依然有问题,可以暂时改为 True 观察控制台输出报错 disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, )


txto