我正在Python单元测试中使用scipy.loadmat加载一个Matlab.mat文件。这种安排在我的桌面上和在我的服务器上运行的Docker容器中都很好。但是,当我试图在Github操作(我的CI流)中运行单元测试时,我得到了一个错误:
model_dict_tmp = loadmat(model_path)
File "/usr/local/lib/python3.6/dist-packages/scipy/io/matlab/mio.py", line 223, in loadmat
MR, _ = mat_reader_factory(f,**kwargs)
File "/usr/local/lib/python3.6/dist-packages/scipy/io/matlab/mio.py", line 72, in mat_reader_factory
mjv, mnv = get_matfile_version(byte_stream)
File "/usr/local/lib/python3.6/dist-packages/scipy/io/matlab/miobase.py", line 231, in get_matfile_version
raise ValueError('Unknown mat file type, version %s, %s' % ret)
ValueError: Unknown mat file type, version 50, 52
.mat文件存储在Github子模块中(作为一个LFS对象),应该和代码沿着被克隆。因此,我希望文件的位置是众所周知的:
mainproject/
submodule/
path/to/matfile.mat
tests/
test_matrix_loading.py # unit test that attempts to load the matrix
当手动旋转相同的Docker映像并将配置项运行为以下内容时,无法重现此错误:python -m unittest discover -s tests/
这和我在动作脚本中使用的指令是一样的。
1.为什么会发生这种情况?这个错误是最近发生的,这种安排以前是有效的。
1.如何调试此问题?
1条答案
按热度按时间4xy9mtcn1#
这最终是由于一个git lfs的问题。
scipy.loadmat
错误只是表现。请参阅:Github操作:如何在子模块中拉取LFS文件
为解。