conda环境已安装scikit-image但导入data模块报I/O错误如何解决
问题根因分析
这个报错核心是scikit-image首次加载data模块时,需要将内置数据文件复制到用户本地缓存目录/home/mathegergely/.cache/scikit-image/0.18.3/,执行文件属性拷贝时触发了输入输出错误,常见触发原因有三类:
- 现有缓存目录文件损坏/存在异常只读锁
- 当前用户对~/.cache下的scikit-image目录没有读写权限
- 缓存目录所在磁盘扇区出现损坏/挂载异常
解决方案
按优先级依次尝试以下操作:
方案1:清理损坏的scikit-image缓存
执行以下命令删除现有损坏的缓存目录,之后重新导入模块即可:
rm -rf ~/.cache/scikit-image
重新运行from skimage import data验证是否恢复正常。
方案2:手动指定scikit-image缓存路径
如果方案1无效,大概率是~/.cache目录本身存在权限/磁盘异常,可以通过环境变量手动指定其他可用路径作为scikit-image的缓存目录:
在Python代码开头添加以下内容:
import os os.environ['SKIMAGE_DATADIR'] = '/path/you/have/read_write_permission/skimage_cache' from skimage import data
如果需要全局生效,可在终端执行:
export SKIMAGE_DATADIR=/path/you/have/read_write_permission/skimage_cache
再运行Python脚本即可。
方案3:修复磁盘权限/异常
如果前两个方案都无效,先检查~/.cache目录的所属权限:
ls -ld ~/.cache
如果所属用户不是当前用户,执行以下命令修复权限:
sudo chown -R $(whoami):$(whoami) ~/.cache
如果权限正常仍报错,需用磁盘检测工具检查挂载/home目录的磁盘是否存在坏道/挂载错误。
内容的提问来源于stack exchange,提问作者Gergely Mathe
相关产品推荐
相关产品推荐

