SciPy构建/安装Mac Osx

时间:2013-02-11 21:36:08

标签: python macos python-2.7 fortran scipy

我在我的mac os x上为python 2.7.3成功构建/安装了NumPy。 现在我想建立/安装scipy。我从git hub下载了它。 进入目录。 Ran python setup.py build,它似乎一直在工作,直到遇到这个错误:

customize Gnu95FCompiler
Could not locate executable gfortran
Could not locate executable f95
customize NAGFCompiler
customize AbsoftFCompiler
Could not locate executable f90
Could not locate executable f77
customize IBMFCompiler
Could not locate executable xlf90
Could not locate executable xlf
customize IntelFCompiler
Could not locate executable ifort
Could not locate executable ifc
customize GnuFCompiler
Could not locate executable g77
customize G95FCompiler
Could not locate executable g95
customize PGroupFCompiler
Could not locate executable pgfortran
don't know how to compile Fortran code on platform 'posix'
building 'dfftpack' library
error: library dfftpack has Fortran sources but no Fortran compiler found

我以为我为NumPy安装了Fortran ...猜不是吗?我该如何下载?

10 个答案:

答案 0 :(得分:90)

您的问题是您需要安装Fortran编译器来构建scipy

此外,如果您已经在禁用Fortran支持的情况下构建了numpy,则可能必须更换它。 Apple预装的一些Python版本预先安装了numpy版本。


获取Fortran的最简单方法是使用Homebrew。正如the docs所说,您需要先安装Xcode及其命令行工具。 (安装命令行工具的方法几乎与Xcode的每个主要版本一起更改,因此请查看链接的文档以获取最新的解释。)然后安装Homebrew。安装URL已更改几次,因此请参阅Homebrew主页或安装说明(http://brew.sh/),但它将类似于:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后:

brew install gcc

(请注意,在2014年的某个时间之前,gfortrangcc的单独食谱,因此命令为brew install gfortran。但如果您现在尝试,那么您将会这样做收到错误说" GNU Fortran现在作为GCC的一部分提供,可以安装:brew install gcc"。)


您真的想使用pip来安装scipy,所以如果您没有,请先获取它。 Apple预装的Python至少在10.7和10.8中包含easy_install但不包括pip,因此最简单的方法是:

sudo easy_install pip

但是,您可能需要考虑使用virtualenv而不是全局安装(在这种情况下,您还要删除以下命令中的sudo)。

现在你已经拥有了gfortranpip,所有你需要做的就是:

sudo pip install --upgrade numpy
sudo pip install scipy

注意事项:

  • 上述说明适用于Apple预装的Python版本。如果你使用不同版本的Python,你真的应该考虑不这样做。保持路径,安装的包等同步是一场噩梦。例外情况是你想要一个Python 3.x版本,在这种情况下从python.org或Homebrew安装它是完全合理的。不存在任何冲突,因为pythonpip2.7等将用于Apple的Python; 3.x版本的python3pip3.3等。

  • 如果您已经pip,但担心它可能已过期,pip install --upgrade pip。 (除了安全性和稳健性优势之外,通过使您与某些科学堆栈或其他模块的二进制轮子兼容,这可以为您节省大量时间。)

  • 对于大多数非Apple Apple安装(甚至可能是10.9或10.10中的Apple;我还没有检查过),你应该使用{{1安装easy_install。关注pip install instructions。但首先要确保你还没有它。

    • 如果您正在使用pip / virtualenv,则您的虚拟环境已包含venv
    • Python 3.4或更高版本可以(并且如果来自python.org安装程序)可以包含pip bootstrap。如果你的3.4+还没有pip,你可能需要pip来安装它。
    • 某些第三方安装,如Homebrew或ActiveState,包括python -m ensurepip
  • 对于Python 3.3或更高版本,您可能希望使用内置venv代替pip

  • 如果您正在使用MacPorts,Fink,gentoo-alt等,则应安装软件包管理器附带的virtualenv软件包,它会拖入其他任何需要的软件包(甚至可能包括重建Python和GCC)。

  • 第三方二进制安装(如Enthought和ActiveState)可能已包含scipy以及您需要的其他所有内容。如果没有,说明基本上与上述相同,但您必须猜测要跳过或遵循哪些步骤,是否scipy等。


如果您正在使用非Apple Apple版本的Python 2.7,并且想要避免PATH问题,那么您必须做两件事:

首先,不要在多个Python中安装任何包含脚本或二进制文件(包括sudo本身)的Python包。例如,如果为Apple 2.7和Homebrew 2.7安装pip,则两者都将尝试创建名为ipython/usr/local/bin/ipython的脚本。如果您很幸运,一次安装将失败。否则,它们都会成功,最终会覆盖另一个,你将无法运行被覆盖的版本。

其次,确保备用Python的脚本和二进制文件的路径出现在Apple的PATH之前。根据您已安装的备用Python以及您遵循的说明,可能是:

  • /usr/local/bin/ipython-2.7
  • /usr/local/bin
  • /Library/Frameworks/Python.framework/Versions/2.7/bin
  • /usr/local/share/python2.7/bin
  • 别的东西

无论路径是什么,您都需要编辑PATH变量。

如果您想影响GUI应用程序(以及LaunchAgents等),显然不再支持这样做的方法,但已弃用的QA1067似乎仍然可以在Lion中运行。它也是Homebrew FAQPython FAQ建议的内容。

如果你只关心命令行会话(Terminal.app和远程ssh),你可以只做标准的Unix编辑适当的配置文件。哪个配置文件适合取决于您想要影响的内容。 (所有用户或只有一个用户?bash或任何shell?依此类推。)如果你不知道自己想要哪一个,你真的应该做一些研究。如果您不想打扰学习,只需/usr/local/Cellar/python/2.7.3/bin然后如果不是您想要的话就不要抱怨。

无论哪种方式,您都需要确保PATH中的~/.profile之前有适当的路径。因此,例如,您可以将以下内容添加到/usr/bin

~/.profile

(当然,您需要创建一个新的终端shell,或者在脚本生效之前获取源代码。)

如果您正在使用PATH=/usr/local/bin:$PATH export PATH homebrew会告诉您是否正确使用。

答案 1 :(得分:3)

看起来您的实际问题只是来自Sourceforge的间歇性下载失败:

curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume. Error: Download failed: downloads.sf.net/project/machomebrew/Bottles/…

如果您再次尝试brew install gfortran,Homebrew应该会自动从此错误中恢复。所以,这是第一件要尝试的事情。

如果这不起作用,请查看brew doctor是否发现任何问题,然后brew install -d gfortran查看它存储部分下载文件的位置,以便您可以手动将其删除并重试。

如果所有其他方法都失败了,您可以使用--build-from-source强制它不使用该瓶子。当然,从源代码构建比安装二进制瓶需要更长的时间,但它应该给出相同的结果。

答案 2 :(得分:3)

截至2014年5月20日,如果您正在使用brew,Fortran将作为gcc的一部分安装。没有单独的Fortran包。这是我安装numpy的原因:

  1. 根据abamert的回答(或参见http://brew.sh/
  2. 安装brew
  3. 安装gcc(brew install gcc
  4. 确认brew的gcc是正确的(which gcc应该指向/ usr / local / bin / gcc)
  5. export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future(请参阅Problems with pip install numpy - RuntimeError: Broken toolchain: cannot link a simple C program
  6. pip install numpy

答案 3 :(得分:2)

我认为这个问题根本不太复杂。

1)安装pip

cd /Library/Frameworks/Python.framework/Versions/ ln -s 2.7 Current

cd / usr / bin rm -f python ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python

2)从https://pypi.python.org/pypi/setuptools#files下载鸡蛋 sudo sh setuptools-0.6c11-py2.7.egg

3)只需从此链接下载并安装gfotran: http://r.research.att.com/tools/

4)之后,你需要输入: sudo pip install -U scipy sudo pip install -U numpy sudo pip install -U matplotlib

希望你应该拥有你想拥有的一切。

答案 4 :(得分:1)

我遇到了同样的问题,使用了以下步骤:
1. brew install gfortran
2. pip install scipy

然后没关系。

答案 5 :(得分:1)

我安装了 gfortran ,二进制文件是 gfortran-4.2 。因此,每当我尝试安装SciPy时,都找不到编译器,因为它试图使用 gfortran

我所做的是为 gfortran 创建 gfortran-4.2 的符号链接。

要查找应创建符号链接的位置:

$ which gfortran-4.2
/usr/local/bin/gfortran-4.2

然后符号链接:

ln -s /usr/local/bin/gfortran-4.2 /usr/local/bin/gfortran

答案 6 :(得分:0)

For OSX yosemite and possibly older osx releases too, you may want to download and install the fortran compiler before running pip install scipy. To download the latest fortran compiler, just go to the following link:

https://gcc.gnu.org/wiki/GFortranBinaries#MacOS

答案 7 :(得分:0)

我认为您的版本的Xcode和OSX很重要。我有Xcode:6.4和Os X 10.11.1并且仍然得到相同的错误消息(找不到gfortran等)。我尝试了很多东西,包括@abarnert的彻底回复,但我的解决方案是升级到Xcode(到7.1.1)。

答案 8 :(得分:-1)

我安装了自制软件,所以我要尝试:$ brew install gfortran 希望这有效

答案 9 :(得分:-2)

以下是OSX 10.7上的全新安装的详细说明。如果我是你,我会走这条路,而不是自己下载和构建资源。

http://www.thisisthegreenroom.com/2011/installing-python-numpy-scipy-matplotlib-and-ipython-on-lion/