Mac OS El Capitan下skimage子模块导入失败问题求助
解决Mac OS El Capitan下scikit-image导入data子模块的ImportError问题
你遇到的问题根源很清晰:你的系统是Mac OS El Capitan(10.11),但通过pip安装的PIL依赖的liblzma.5.dylib是针对Mac OS X 10.12及以上版本编译的——_clock_gettime这个系统符号是10.12才引入的,El Capitan的系统库/usr/lib/libSystem.B.dylib里并没有它,所以动态链接直接失败了。
下面是具体的解决步骤:
先卸载现有不兼容的包:
把用pip安装的scikit-image和Pillow彻底卸载,避免残留依赖引发冲突:pip uninstall -y scikit-image pillow改用conda安装适配版本:
conda会根据你的系统环境提供匹配的预编译包,比pip更适合旧系统的依赖管理。优先使用conda-forge频道,这里的包通常对旧系统兼容性更好:conda install -c conda-forge scikit-image如果上述安装仍有问题,指定兼容的Pillow版本:
Pillow 7.0及以上版本不再支持Mac OS 10.11,你可以指定安装最后支持该系统的版本(比如6.2.2),再搭配scikit-image:conda install pillow=6.2.2 scikit-image验证修复效果:
打开Jupyter Notebook,运行以下代码测试:from skimage import data # 可以加个小测试确认功能正常 import matplotlib.pyplot as plt img = data.astronaut() plt.imshow(img) plt.show()
另外提醒一句:尽量避免在conda环境里混用pip和conda安装包,尤其是旧系统环境下,两种包管理工具的依赖处理逻辑不同,很容易出现这类版本不兼容的问题。
内容的提问来源于stack exchange,提问作者Nilam Dhatrak
相关产品推荐
相关产品推荐

