安装Scipy在Mountain Lion上失败

11

当我尝试使用pip install scipy安装scipy时,出现以下回溯错误:

Downloading/unpacking scipy
  Downloading scipy-0.10.1.tar.gz (6.2MB): 6.2MB downloaded
  Running setup.py egg_info for package scipy
    Running from scipy source directory.
    blas_opt_info:
      FOUND:
        extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
        define_macros = [('NO_ATLAS_INFO', 3)]
        extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']

    non-existing path in '/private/var/folders/rd/fplkflh93ls54kbl5ylphl4h0000gn/T/pip-build/scipy/scipy/io': 'docs'
    lapack_opt_info:
      FOUND:
        extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
        define_macros = [('NO_ATLAS_INFO', 3)]
        extra_compile_args = ['-msse3']

    umfpack_info:
      libraries umfpack not found in /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib
      libraries umfpack not found in /usr/local/lib
      libraries umfpack not found in /usr/lib
    /usr/local/lib/python2.7/site-packages/numpy/distutils/system_info.py:470: UserWarning:
        UMFPACK sparse solver (http://www.cise.ufl.edu/research/sparse/umfpack/)
        not found. Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [umfpack]) or by setting
        the UMFPACK environment variable.
      warnings.warn(self.notfounderror.__doc__)
      NOT AVAILABLE

    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/var/folders/rd/fplkflh93ls54kbl5ylphl4h0000gn/T/pip-build/scipy/setup.py", line 196, in <module>
        setup_package()
      File "/var/folders/rd/fplkflh93ls54kbl5ylphl4h0000gn/T/pip-build/scipy/setup.py", line 187, in setup_package
        configuration=configuration )
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/core.py", line 152, in setup
        config = configuration()
      File "/var/folders/rd/fplkflh93ls54kbl5ylphl4h0000gn/T/pip-build/scipy/setup.py", line 138, in configuration
        config.add_subpackage('scipy')
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 1002, in add_subpackage
        caller_level = 2)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 971, in get_subpackage
        caller_level = caller_level + 1)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 908, in _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "scipy/setup.py", line 20, in configuration
        config.add_subpackage('special')
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 1002, in add_subpackage
        caller_level = 2)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 971, in get_subpackage
        caller_level = caller_level + 1)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 908, in _get_configuration_from_setup_py
        config = setup_module.configuration(*args)
      File "/private/var/folders/rd/fplkflh93ls54kbl5ylphl4h0000gn/T/pip-build/scipy/scipy/special/setup.py", line 54, in configuration
        extra_info=get_info("npymath")
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 2220, in get_info
        pkg_info = get_pkg_info(pkgname, dirs)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/misc_util.py", line 2172, in get_pkg_info
        return read_config(pkgname, dirs)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.py", line 390, in read_config
        v = _read_config_imp(pkg_to_filename(pkgname), dirs)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.py", line 326, in _read_config_imp
        meta, vars, sections, reqs = _read_config(filenames)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.py", line 309, in _read_config
        meta, vars, sections, reqs = parse_config(f, dirs)
      File "/usr/local/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.py", line 281, in parse_config
        raise PkgNotFound("Could not find file(s) %s" % str(filenames))
    numpy.distutils.npy_pkg_config.PkgNotFound: Could not find file(s) ['/usr/local/lib/python2.7/site-packages/numpy/core/lib/npy-pkg-config/npymath.ini']

我正在使用Mountain Lion和Python 2.7.3,这是我使用Homebrew安装的,并且使用pip install numpy安装了NumPy。

为什么scipy安装失败?

4个回答

9

5
这个问题不仅仅出现在OSX上:我在Ubuntu上的virtualenv 1.8.2中使用pip 1.2.1也遇到了同样的问题。似乎pip install numpy可以正常工作,但之后pip install scipy会像上面一样失败。解决方法是下载numpy源代码,使用python setup.py install --prefix=/path/to/my/virtual/environment手动安装。之后,pip install scipy就可以正常工作了。 - Maxy-B
6
这是一个更新,以下是在Mountain Lion上使用非虚拟环境的步骤:mkdir -p build && cd build 然后 git clone https://github.com/numpy/numpy.git 接着运行 python setup.py buildpython setup.py install ,最后使用 pip install scipy 安装 scipy。因为只有 pip 下的 numpy 有问题,而不是 scipy。请注意不要改变原意。 - Adam Nelson

8

4
如果您不使用virtualenv,那么最不具侵入性的修复方法可能是手动编辑/usr/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg/pip/locations.py(您的pip版本可能有所不同)。只需将第35行替换为:
build_prefix = os.path.join(tempfile.gettempdir(), 'pip-build') 

到:

build_prefix = os.path.realpath(os.path.join(tempfile.gettempdir(), 'pip-build')) 

在此更改后,您需要重新安装numpypip uninstall numpy; pip install numpy)。然后可以通过pip正确安装scipy

该问题是由pip错误引起的。上述解决方案根据来自github用户qwcode的pip补丁(在Lokkju提到的问题讨论中建议)而得出。此补丁似乎已合并到主要pip存储库中。但是,我没有看到更新pip的简单方法,因为它与Python捆绑在一起。因此,手动进行这个简单的修复对我有用。


我只想补充一下,如果您正在本地安装scipy,则此解决方案是必需的,因为pip 1.3.1+需要SSL证书,而pip 1.2.1没有这个build_prefix更改。 - Guillochon

0

我在2015年使用MacOSX Yosemite时遇到了同样的问题。我认为这是由pip旧版本的错误引起的。卸载pip并获取最新版本的pip会有所帮助。 从https://pip.pypa.io/en/latest/installing.html获取pip, 然后

$ sudo pip uninstall scipy
$ sudo pip install scipy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接