PyInstaller打包Python可执行文件后崩溃:缺失arcgis子模块求助
解决PyInstaller打包arcgis库时的ModuleNotFoundError问题
你的问题出在PyInstaller的静态依赖检测机制上——它没法识别arcgis内部通过动态方式导入的私有模块(比如arcgis.gis._impl._portalpy),所以打包时漏掉了这些模块,导致运行时找不到。
解决步骤很直接:
修改你的
main.spec文件,在Analysis部分的hiddenimports里添加缺失的模块:a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[], hiddenimports=['arcgis.gis._impl._portalpy'], # 这里添加缺失的模块 hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, )如果后续运行还出现其他类似的
ModuleNotFoundError,把对应的模块继续添加到hiddenimports列表里就行(比如arcgis的其他内部私有模块)。保存修改后的spec文件,重新执行打包命令:
PyInstaller main.spec
修改后的完整spec文件示例:
# -*- mode: python ; coding: utf-8 -*- import sys sys.setrecursionlimit(sys.getrecursionlimit() * 5) a = Analysis( ['main.py'], pathex=[], binaries=[], datas=[], hiddenimports=['arcgis.gis._impl._portalpy'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, ) pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, [], exclude_binaries=True, name='main', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, ) coll = COLLECT( exe, a.binaries, a.datas, strip=False, upx=True, upx_exclude=[], name='main', )
内容的提问来源于stack exchange,提问作者MB1
相关产品推荐
相关产品推荐

