在OS X Snow Leopard上运行scipy和numpy测试时出错

5 投票
2 回答
6170 浏览
提问于 2025-04-17 05:54

我刚开始接触StackOverflow,也刚学Python,希望能通过这个平台来学习和提升我的Python编程技能。

不过,当我在我的Mac上安装好Python、SciPy和NumPy后,想要运行一个完整的测试来验证安装是否成功时,遇到了问题:

>>> import scipy
>>> scipy.test()
Running unit tests for scipy

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    scipy.test()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 318, in test
    self._show_system_info()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 187, in _show_system_info
    nose = import_nose()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/testing/nosetester.py", line 69, in import_nose
    raise ImportError(msg)
ImportError: Need nose >= 0.10.0 for tests - see http://somethingaboutorange.com/mrl/projects/nose

根据错误信息的提示,我通过easy_install安装了一个叫'nose'的包,安装看起来成功了,因为我在bash中得到了以下信息:

mlstr:~ mlstr$ nosetests -V
nosetests version 1.1.2

于是我又尝试了一次SciPy的测试,但结果还是失败,错误信息和之前一样。请问有没有人能告诉我,还需要做些什么才能让nose被SciPy和NumPy的单元测试使用?非常感谢。

更新 #1: 在尝试了Rahul的建议,使用pip重新安装nose后,我发现问题出在这里:每当我在bash中使用easy_install或pip时,包都是安装到Python 2.6的目录,而不是2.7的目录。我想这是因为默认情况下,Snow Leopard自带的是2.6版本。那么我该怎么做才能告诉easy_install或pip,我想为Python 2.7安装特定的包呢?谢谢。

更新 #2: 根据我上面的更新,我在这里找到了解决方案:在Mac OS X上安装多个版本的Python时使用easy_install。确实是因为我使用了错误版本的easy_install,所以我的nose安装到了Mac OS X自带的Python 2.6上。谢谢。

2 个回答

0

如果你想使用本地安装的 Python 版本,你需要确保在控制台运行 Python 时调用的是这个版本。

在 Linux 机器上,你可以使用别名来实现这个目的。一旦你在控制台运行了正确的 Python,所有的 easy_install 相关功能就会在这个正确的 Python 版本中可用了。

7

我试着重现你遇到的错误。因为我没有安装nose,所以也出现了同样的错误。

我用pip安装了nose。

sudo pip install nose

安装完nose后,scipy.test()就能正常工作了。我没有做其他任何事情。你有没有用pip安装nose呢?如果没有,试试用pip安装一下。

我的机器上有:
SciPy版本 0.10.0.dev
Nose - 1.1.2

撰写回答