测试SciPy时出错
在使用nose这个工具测试scipy时,如果你在Ubuntu 12.04上运行scipy.test()
,测试会失败,尽管你已经安装了所有的基础包。请问我需要担心这个问题吗?如果需要,我该怎么解决呢?
In [8]: scipy.test()
Running unit tests for scipy
NumPy version 1.5.1
NumPy is installed in /usr/lib/python2.7/dist-packages/numpy
SciPy version 0.9.0
SciPy is installed in /usr/lib/python2.7/dist-packages/scipy
Python version 2.7.2+ (default, Jan 21 2012, 23:31:34) [GCC 4.6.2]
nose version 1.1.2
[................]
======================================================================
FAIL: test_io.test_imread
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/usr/lib/python2.7/dist-packages/numpy/testing/decorators.py", line 146, in skipper_func
return f(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/scipy/ndimage/tests/test_io.py", line 16, in test_imread
assert_array_equal(img.shape, (300, 420, 3))
File "/usr/lib/python2.7/dist-packages/numpy/testing/utils.py", line 686, in assert_array_equal
verbose=verbose, header='Arrays are not equal')
File "/usr/lib/python2.7/dist-packages/numpy/testing/utils.py", line 579, in assert_array_compare
raise AssertionError(msg)
AssertionError:
Arrays are not equal
(shapes (2,), (3,) mismatch)
x: array([300, 420])
y: array([300, 420, 3])
----------------------------------------------------------------------
Ran 3780 tests in 32.328s
FAILED (KNOWNFAIL=11, SKIP=20, failures=1)
1 个回答
11
如果你查看一下 /usr/lib/python2.7/dist-packages/scipy/ndimage/tests/test_io.py
这个文件,你应该能看到:
def test_imread():
lp = os.path.join(os.path.dirname(__file__), 'dots.png')
img = ndi.imread(lp)
assert_array_equal(img.shape, (300, 420, 3))
img = ndi.imread(lp, flatten=True)
assert_array_equal(img.shape, (300, 420))
这个测试似乎是在检查 flatten=True
是否能把一个RGB图像转换成1位的灰度图像。
不过在我的Ubuntu 11.10系统上,dots.png 文件已经是一个1位的图像文件了:
% file /usr/share/pyshared/scipy/ndimage/tests/dots.png
/usr/share/pyshared/scipy/ndimage/tests/dots.png: PNG image data, 420 x 300, 1-bit colormap, non-interlaced
如果我在一个RGBA图像上手动进行这个测试,那么测试就能通过:
In [18]: z = ndi.imread('image.png')
In [20]: z.shape
Out[20]: (250, 250, 4)
In [24]: w = ndi.imread('image.png', flatten = True)
In [25]: w.shape
Out[25]: (250, 250)
所以我觉得这里并没有什么严重的问题,只是可能原本应该提供的 dots.png
文件应该是一个RGB图像,而不是灰度图像。