如何在Mac Mountain Lion OS X v10.8上使用pip安装Scipy

18

我在Mountain Lion上使用pip安装Scipy遇到了严重的困难。

我已经尝试过:

sudo pip install -e git+https://github.com/scipy/scipy#egg=scipy-dev

在网上的多个地方都提到过这一点。

这会导致出现以下错误:

ld: library not found for -lgcc
lipo: can't figure out the architecture type of: /var/tmp//ccC2HLVs.out

在错误出现之前,我假设有几个警告(我认为不是很严重)。

有人有什么建议吗?


1
我还没有安装Mountain Lion,但根据我的经验,我建议在第一步中远离pip。下载源代码并使用python setup.py install --user自行编译。--user标志将强制在~/.local中安装,无需使用sudo - Pierre GM
9个回答

18

现在可以通过 homebrew tap 获取 Scipy。如果您已经安装了 homebrew

brew tap samueljohn/python
brew install scipy

在此处查看更多信息:homebrew-python


2
此外,我需要先使用Homebrew的Python('brew install python; brew link --overwrite python'),然后在安装tap和scipy之后(这些都是成功的):'pip install python-dateutil'。 - akauppi

11

Pip在OS X下安装scipy时通常会遇到困难。从源代码安装并不容易,因此我建议不要这样做。在OS X下,你有几个更好的选择:

  • Scipy超级包,一堆预编译的二进制文件
  • Enthought Canopy(免费或其他版本)已经包含了你需要的一切(如numpy、scipy、matplotlib等)
  • Anaconda,一个免费的科学Python发行版,可能包含了你所需的所有软件包。
  • MacPorts,一个全面而灵活的包管理器,可以让你安装和维护Python发行版。
  • Homebrew,另一个在OS X上流行的包管理器。

3
我希望通过 pip 来控制我的环境,因为我想保持对环境的控制。我记得之前的 OS X 版本可以实现这点。但是我现在有些困惑,为什么安装开发版本(理论上应该适用于其他人)的建议对我不起作用... - arlogb
2
scipy网页中可以看到: "@arlogb 还要注意,不建议使用pip和特别是easy_install,因为这些工具经常会出现标准python setup.py install无法解决的问题。" - tiago
1
这有点晚了,但关于通过PIP安装,只要我先安装伪可选要求,它对我来说似乎很好用。通常,我需要执行以下操作:#首先安装numpy和PIL,以便PIP不会搞砸scipy的安装。 pip install numpy pil pip install -r requirements.txt#包含scipy相关的PIP问题是[Github#25](https://github.com/pypa/pip/issues/25) - Spikes
Scipy超级包仍然相关和最新吗? - clifgray

5

以下是我在使用虚拟环境(Mac OS X 10.9.2 Mavericks)中安装matplotlib和scipy时的解决方案:

# See George's answer above
brew update
brew upgrade
brew install gfortran 

# See http://www.scipy.org/scipylib/building/macosx.html (the link Nathan Gould posted above)
export CXX=g++-5.1
export CC=gcc-5.1
export FFLAGS=-ff2c
sudo ln -s /usr/bin/gcc /usr/bin/gcc-5.1
sudo ln -s /usr/bin/g++ /usr/bin/g++-5.1

pip install matplotlib
pip install scipy

Matplotlib 安装很快,但是 Scipy 花费了很长时间。


3

补充一下@Anton I. Sipos所说的。我安装了Enthought软件包,但升级时遇到了问题,因此我决定使用Homebrew进行干净的安装。不幸的是,仅进行tap和install对我来说效果不佳。因此在搜索一段时间后,我在GitHub上找到了一个问题,由samualjohn解决并为我工作:

brew remove python
rm -rf /Library/Python/2.7/site-packages # it's save to delete this!
brew install python
pip install nose
brew install numpy
brew install scipy

问题显然是在Enthought卸载指南未涵盖的site-packages冲突方面。
注意:我不得不使用pip安装matplotlib。

2

我在安装scipy时也遇到了与OSX 10.9 Mavericks相似的问题。对我有用的解决方法如下:

sudo pip list

之前展示了numpy,所以我这样做:

sudo pip install --upgrade numpy

之后

brew list

我正在展示gfortran。我确保我已经拥有最新版本。

brew update
brew upgrade

但是

sudo pip install scipy 

我遇到了一个奇怪的Fortran错误,程序无法正常运行。因此,我卸载了它并重新安装了它。

sudo brew install gfortran
sudo brew uninstall gfortran

令我惊讶的是

sudo pip install scipy 

之后就可以正常工作了。


谢谢你,帮我在Mavericks上使用Homebrew安装了scipy。(我现在还保留了gfortran的安装...) - Kay

1

我尝试了所有方法:pip、macports、easy_install等,但在Mac OS El Captain上都无法正常工作。唯一成功的方法是使用brew:

$ brew install scipy

接下来,它会要求您按照以下说明操作:

$ brew link --overwrite numpy
$ mkdir -p /Users/adrieljr/Library/Python/2.7/lib/python/site-packages
$ echo 'import sys; sys.path.insert(1, "/usr/local/lib/python2.7/site-packages")' >> /Users/adrieljr/Library/Python/2.7/lib/python/site-packages/homebrew.pth

1

最近我在虚拟环境中安装scipy时遇到了麻烦。我的问题是gfortran没有被正确识别。我使用macports sudo port install gcc48 并通过以下方式创建符号链接只使用gfortran:

sudo ln -s /opt/local/bin/gfortran-mp-4.8 /opt/local/bin/gfortran

在我的虚拟环境中,pip install scipy 顺利完成,没有任何错误。

这对我有用。在OS X 10.8.5,Python 2.7中,在venv内部工作。谢谢!@biophetik - MyPreciousss

1
在Mavericks上,以下内容有效(也可能适用于其他版本):
如果您尚未安装,请安装pip
sudo easy_install pip

然后安装/更新 scipy
sudo pip install scipy -U

由于某种原因,pipscipy安装到以下位置:
/Library/Python/2.7/site-packages/

并且不会删除旧版本。
/System/Library/Frameworks/Python.framework/Versions/2.7//Extras/lib/python/scipy/

所以只需删除旧版本即可使其正常工作。打印版本号:

python -c "import scipy; print scipy.__version__"

1
在Mac OS X上使用pip安装scipy是可能的!您需要正确的C和Fortran编译器来设置scipy。此页面应该会对您有所帮助:

http://www.scipy.org/scipylib/building/macosx.html

一旦你完成了这个步骤,你就应该可以使用 pip install scipy 安装。作为额外的故障排除提示,你可能需要创建一个符号链接到你的编译器,以便设置过程可以找到它。之前的帖子 @biophetik 给出了如何执行此操作的示例。另外,当我安装scipy时,我已经在我的虚拟环境中安装了numpy。我不确定它们是否有依赖关系。

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