如何解决导入skimage时报DLL加载失败的ImportError错误?
完整报错信息
ImportError Traceback (most recent call last) C:\Users\VEERAR~1\AppData\Local\Temp/ipykernel_12200/2758554015.py in <module> 22 23 ---> 24 from skimage.segmentation import clear_border 25 opening=clear_border(opening) 26 c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\segmentation\__init__.py in <module> 1 from ._expand_labels import expand_labels 2 from .random_walker_segmentation import random_walker ----> 3 from .active_contour_model import active_contour 4 from ._felzenszwalb import felzenszwalb 5 from .slic_superpixels import slic c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\segmentation\active_contour_model.py in <module> 2 from scipy.interpolate import RectBivariateSpline 3 from ..util import img_as_float ----> 4 from ..filters import sobel 5 6 c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\filters\__init__.py in <module> 2 from ._gaussian import (gaussian, _guess_spatial_dimensions, 3 difference_of_gaussians) ----> 4 from .edges import (sobel, sobel_h, sobel_v, 5 scharr, scharr_h, scharr_v, 6 prewitt, prewitt_h, prewitt_v, c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\filters\edges.py in <module> 16 from scipy.ndimage import convolve, binary_erosion 17 ---> 18 from ..restoration.uft import laplacian 19 20 # n-dimensional filter weights c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\restoration\__init__.py in <module> 11 from .inpaint import inpaint_biharmonic 12 from .j_invariant import calibrate_denoiser ---> 13 from .rolling_ball import rolling_ball, ball_kernel, ellipsoid_kernel 14 15 c:\users\veerarajzx10r\appdata\local\programs\python\python39\lib\site-packages\skimage\restoration\rolling_ball.py in <module> 1 import numpy as np 2 ----> 3 from ._rolling_ball_cy import apply_kernel, apply_kernel_nan 4 5 ImportError: DLL load failed while importing _rolling_ball_cy: The specified module could not be found.
错误成因
这是Windows平台下scikit-image库的典型DLL依赖问题,常见于Python 3.9环境安装0.19.x版本的skimage时:要么是预编译的扩展包依赖的VC++运行时组件与系统环境不匹配,要么是包文件下载过程中出现损坏,导致cython编译的_rolling_ball_cy扩展模块无法加载对应的动态链接库。
修复步骤
- 第一步:卸载当前已安装的损坏版本
执行命令:pip uninstall scikit-image -y - 第二步:选择对应场景的方案重新安装
- 普通pip环境优先选该方案:安装经过验证的稳定兼容版本
执行命令:pip install scikit-image==0.18.3 - 需要使用最新版skimage的场景:先安装微软VC++ 2015-2022可再发行运行库,重启终端后执行命令安装最新版:
pip install scikit-image - conda环境用户直接使用conda安装,会自动补全所有DLL依赖:
conda install scikit-image
- 普通pip环境优先选该方案:安装经过验证的稳定兼容版本
- 第三步:验证修复效果
执行代码from skimage.segmentation import clear_border,无报错即为修复完成。
内容的提问来源于stack exchange,提问作者Veera Raj
相关产品推荐
相关产品推荐

