Github Action中scipy.loadmat加载.mat文件遇未知类型错误
问题分析与解决方案
1. 问题原因
出现Unknown mat file type, version 50, 52错误的核心原因是GitHub Actions中没有正确拉取到LFS存储的.mat文件,实际读取的是LFS的占位符文件(仅几十字节,内容为LFS指针信息),而非真实的.mat文件。
近期突然出现问题的可能诱因:
- GitHub Actions的克隆步骤被修改,移除了LFS相关配置
- 子模块的LFS设置更新后,主仓库的克隆脚本未同步调整
- GitHub LFS临时故障,导致占位符未被替换为真实文件
- 子模块的引用分支被修改,新分支的LFS配置存在问题
2. 调试与解决步骤
调试方法
- 在GitHub Actions的测试步骤前添加文件检查命令,确认.mat文件的大小和内容:
# 查看文件大小 ls -lh mainproject/submodule/path/to/matfile.mat # 查看文件前几行内容(LFS占位符会显示oid等指针信息) head -10 mainproject/submodule/path/to/matfile.mat - 检查GitHub Actions的克隆日志,确认是否有LFS拉取的相关记录,比如是否出现
Skipped content check for LFS objects类提示
解决措施
- 确保克隆主仓库时启用LFS,并递归拉取子模块的LFS文件:
在Actions的actions/checkout步骤中添加参数:- name: Checkout code uses: actions/checkout@v4 with: submodules: recursive lfs: true fetch-depth: 0 - 如果子模块单独使用LFS,拉取子模块后单独执行LFS拉取:
git submodule update --init --recursive git lfs pull --submodules - 验证Docker镜像中的scipy版本与本地/服务器一致,排除版本兼容问题(此案例中本地正常,优先级较低)
内容的提问来源于stack exchange,提问作者Shahar
相关产品推荐
相关产品推荐

