34

我在我的 mac os x 上成功地为 python 2.7.3 构建/安装了 NumPy。现在我也想构建/安装 scipy。我是从 git hub 下载的。进了目录。运行 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 ......你猜不是吗?我将如何下载它?

4

10 回答 10

94

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

此外,如果您已经有一个numpy禁用 Fortran 支持的构建,您可能需要替换它。一些 Apple 预装的 Python 版本已经numpy预装了这样的构建。


获取 Fortran 的最简单方法是使用Homebrew。正如文档所说,您需要先安装 Xcode 及其命令行工具。(安装命令行工具的方式几乎随 Xcode 的每个主要版本而变化,因此请参阅链接文档以获取最新说明。)然后安装 Homebrew。安装 URL 已经更改了几次,因此请参阅 Homebrew 主页或安装说明 ( http://brew.sh/ ),但会是这样的:

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

然后:

brew install gcc

(请注意,直到 2014 年的某个时候,gfortran它是一个单独的配方gcc,所以命令brew install gfortran是:brew install gcc“。)


你真的很想使用pipto install scipy,所以如果你没有那个,请先获取它。Apple 预装的 Python,至少在 10.7 和 10.8 中,包括easy_install但不包括pip,所以最简单的方法是:

sudo easy_install pip

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

现在你已经有了gfortranand pip,你所要做的就是:

sudo pip install --upgrade numpy
sudo pip install scipy

注意事项:

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

  • 如果您已经有pip,但担心它可能已过时,pip install --upgrade pip. (除了安全性和鲁棒性的好处之外,这可以让您与某些科学堆栈或其他模块的二进制轮子兼容,从而为您节省大量时间。)

  • 对于大多数非 Apple Python安装(甚至可能是 Apple 在 10.9 或 10.10 中的;我还没有检查过),您不应该使用. 按照安装说明进行操作。但首先要确保你还没有它。easy_installpippip

    • 如果您使用virtualenv/ venv,您的虚拟环境将已经包含pip.
    • Python 3.4 或更高版本可能(并且将,如果来自 python.org 安装程序)包含一个pipbootstrap。如果您的 3.4+ 还没有pip,您可能需要python -m ensurepip安装它。
    • 一些第三方安装,如 Homebrew 或 ActiveState,包括pip.
  • 对于 Python 3.3 或更高版本,您可能希望使用内置的venv而不是virtualenv.

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

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


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

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

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

  • /usr/local/bin
  • /Library/Frameworks/Python.framework/Versions/2.7/bin
  • /usr/local/share/python2.7/bin
  • /usr/local/Cellar/python/2.7.3/bin
  • 别的东西

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

如果您想影响 GUI 应用程序(和 LaunchAgent 等),显然不再有支持的方式来执行此操作,但已弃用的QA1067似乎仍然可以在 Lion 中使用。这也是 Homebrew FAQPython FAQ所建议的。

如果您只关心命令行会话(Terminal.app 和远程 ssh),则可以改为只执行标准 Unix 操作,即编辑相应的配置文件。哪个配置文件适合取决于您想要影响的内容。(所有用户还是只有一个用户?bash 或任何 shell?等等。)如果你不知道你想要哪一个,你真的应该做一些研究。如果你不想费心学习,~/.profile那就去做,如果这不是你想要的,就不要抱怨。

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

PATH=/usr/local/bin:$PATH
export PATH

(您当然需要创建一个新的终端 shell 或获取脚本,然后才能生效。)

如果您正在使用homebrewbrew doctor会告诉您是否正确。

于 2013-02-11T22:37:41.983 回答
3

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

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

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

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

如果一切都失败了,您可以通过使用强制它不使用瓶子--build-from-source。当然,从源代码构建比安装二进制瓶花费的时间要长得多,但它应该给出相同的结果。

于 2013-02-12T00:52:58.913 回答
3

自 2014 年 5 月 20 日起,如果您使用的是 brew,则 Fortran 将作为 gcc 的一部分安装。不需要单独的 Fortran 包。以下是我安装 numpy 的方法:

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

我认为这个问题一点也不复杂。

1)安装点子

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

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下载 egg 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

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

于 2013-05-18T18:17:12.293 回答
1

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

那么就可以了。

于 2013-07-01T00:54:11.053 回答
1

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

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

要找到应该创建符号链接的位置,请运行:

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

然后符号链接它:

ln -s /usr/local/bin/gfortran-4.2 /usr/local/bin/gfortran
于 2015-07-28T21:26:54.423 回答
0

对于 OSX yosemite 和可能更旧的 osx 版本,您可能需要在运行之前下载并安装 fortran 编译器pip install scipy。要下载最新的 fortran 编译器,只需转到以下链接:

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

于 2015-09-14T15:36:44.620 回答
0

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

于 2015-11-26T01:10:18.963 回答
-1

我已经安装了 homebree,所以我要试试: $brew install gfortran 希望这有效

于 2013-02-11T21:40:57.487 回答
-2

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

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

于 2013-02-11T21:57:01.297 回答