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

Kaggle环境导入imgaug遇QhullError导入错误求助

解决ImportError: cannot import name 'QhullError' from 'scipy.spatial'问题

问题背景

在Kaggle平台执行TensorFlow转PyTorch的转换项目时,运行代码import imgaug as aug # data augmentation触发如下错误:

ImportError: cannot import name 'QhullError' from 'scipy.spatial' (/opt/conda/lib/python3.10/site-packages/scipy/spatial/__init__.py)

当前环境配置:

  • scipy版本:1.11.1
  • scikit-image版本:0.21.0
  • 已开启「始终使用最新环境」选项
    尝试过执行!pip install --upgrade --force-reinstall install scipy命令,但问题未解决。完整报错堆栈如下:
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 10
      7 import h5py
      8 import shutil
---> 10 import imgaug as aug # data augmentation
     11 import numpy as np # linear algebra
     12 import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

File /opt/conda/lib/python3.10/site-packages/imgaug/__init__.py:9
      4 # this contains some deprecated classes/functions pointing to the new
      5 # classes/functions, hence always place the other imports below this so that
      6 # the deprecated stuff gets overwritten as much as possible
      7 from imgaug.imgaug import *  # pylint: disable=redefined-builtin
----> 9 import imgaug.augmentables as augmentables
     10 from imgaug.augmentables import *
     11 import imgaug.augmenters as augmenters

File /opt/conda/lib/python3.10/site-packages/imgaug/augmentables/__init__.py:8
      6 from imgaug.augmentables.lines import *
      7 from imgaug.augmentables.heatmaps import *
----> 8 from imgaug.augmentables.segmaps import *
      9 from imgaug.augmentables.batches import *

File /opt/conda/lib/python3.10/site-packages/imgaug/augmentables/segmaps.py:12
      9 import six.moves as sm
     11 from .. import imgaug as ia
----> 12 from ..augmenters import blend as blendlib
     13 from .base import IAugmentable
     16 @ia.deprecated(alt_func="SegmentationMapsOnImage",
     17                comment="(Note the plural 'Maps' instead of old 'Map'.)")
     18 def SegmentationMapOnImage(*args, **kwargs):

File /opt/conda/lib/python3.10/site-packages/imgaug/augmenters/__init__.py:21
     19 import imgaug.augmenters.pillike  # use via: iaa.pillike.*
     20 from imgaug.augmenters.pooling import *
----> 21 from imgaug.augmenters.segmentation import *
     22 from imgaug.augmenters.size import *
     23 from imgaug.augmenters.weather import *

File /opt/conda/lib/python3.10/site-packages/imgaug/augmenters/segmentation.py:21
     17 import numpy as np
     18 # use skimage.segmentation instead `from skimage import segmentation` here,
     19 # because otherwise unittest seems to mix up imgaug.augmenters.segmentation
     20 # with skimage.segmentation for whatever reason
----> 21 import skimage.segmentation
     22 import skimage.measure
     23 import six

File /opt/conda/lib/python3.10/site-packages/skimage/segmentation/__init__.py:7
      5 from .slic_superpixels import slic
      6 from ._quickshift import quickshift
----> 7 from .boundaries import find_boundaries, mark_boundaries
      8 from ._clear_border import clear_border
      9 from ._join import join_segmentations, relabel_sequential

File /opt/conda/lib/python3.10/site-packages/skimage/segmentation/boundaries.py:5
      2 from scipy import ndimage as ndi
      4 from .._shared.utils import _supported_float_type
----> 5 from ..morphology import dilation, erosion, square
      6 from ..util import img_as_float, view_as_windows
      7 from ..color import gray2rgb

File /opt/conda/lib/python3.10/site-packages/skimage/morphology/__init__.py:12
     10 from ..measure._label import label
     11 from ._skeletonize import medial_axis, skeletonize, skeletonize_3d, thin
----> 12 from .convex_hull import convex_hull_image, convex_hull_object
     13 from .grayreconstruct import reconstruction
     14 from .misc import remove_small_holes, remove_small_objects

File /opt/conda/lib/python3.10/site-packages/skimage/morphology/convex_hull.py:4
      2 from itertools import product
      3 import numpy as np
----> 4 from scipy.spatial import ConvexHull, QhullError
      5 from ..measure.pnpoly import grid_points_in_poly
      6 from ._convex_hull import possible_hull

问题原因

scipy 1.11.x版本中,QhullError异常类从scipy.spatial模块迁移到了scipy.spatial.qhull子模块。而当前使用的scikit-image 0.21.0版本仍在从旧路径导入QhullError,导致版本不兼容,触发导入错误。

解决方案

方案1:降级scipy到兼容版本

安装scipy 1.10.x版本(该版本中QhullError仍保留在scipy.spatial路径下):

!pip install scipy==1.10.1 --force-reinstall

方案2:升级scikit-image到兼容版本

scikit-image 0.22.0及以上版本已修复该导入路径问题,升级到新版本即可:

!pip install scikit-image>=0.22.0 --upgrade --force-reinstall

方案3:临时应急修复(不推荐长期使用)

在导入imgaug之前,手动将QhullError映射到旧路径:

from scipy.spatial.qhull import QhullError
import scipy.spatial
scipy.spatial.QhullError = QhullError

# 之后正常导入imgaug
import imgaug as aug

内容的提问来源于stack exchange,提问作者m2h9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:35:18