You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:23:17