SciPy构建/安装Mac-Osx

2024-06-17 10:44:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我成功地在MacOSX上为Python2.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…你猜不是吗?我怎么下载呢?


Tags: gitnumpy目录setuplibrarynotscipymacosx
3条回答

您的问题是需要安装Fortran编译器来生成scipy

另外,如果已经有一个numpy是在禁用Fortran支持的情况下生成的,则可能需要替换它。一些苹果预装的Python版本已经预装了这样的构建。


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

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

然后:

brew install gcc

(请注意,直到2014年的某个时候,gfortran是与gcc分开的配方,因此命令是brew install gfortran。但是如果您现在尝试,您将得到一个错误,说“GNU Fortran现在作为GCC的一部分提供,并且可以使用brew install gcc安装。”


你真的想用^{}来安装scipy,所以如果你没有,请先安装它。苹果预装的Python,至少在10.7和10.8版本中,包括easy_install,但不包括pip,所以最简单的方法是:

sudo easy_install pip

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

既然你有了gfortranpip,你所要做的就是:

sudo pip install --upgrade numpy
sudo pip install scipy

注意事项:

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

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

  • 对于大多数非Apple Python安装(甚至可能是10.9或10.10中的Apple;我还没有检查过),应该使用easy_install来安装pip。按^{} install instructions键。但首先要确定你还没有。

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

  • 如果您使用的是MacPorts、Fink、gentoo-alt等,那么您应该安装包管理器附带的scipy包,它将拖入所需的任何内容(甚至可能包括重新构建Python和GCC)。

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


如果您使用的是Python2.7的非Apple版本,并且希望避免路径问题,则必须执行两项操作:

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

其次,确保备用Python脚本和二进制文件的路径在路径中的Apple之前。根据您安装的备选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
  • 别的什么

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

如果您想影响GUI应用程序(和LaunchAgents等),显然已经没有一种受支持的方法来实现这一点,但是不推荐的QA1067似乎在Lion中仍然有效。这也是自制酒FAQPython FAQ的建议。

如果您只关心命令行会话(包括Terminal.app和remote ssh),那么您可以只做标准的Unix操作,即编辑适当的概要文件。哪个配置文件合适取决于要影响的内容。(所有用户还是只有一个用户?猛击还是炮弹?如果你不知道你想要哪一个,你真的应该做些研究。如果你不想费心学习,只要做~/.profile,然后不要抱怨,如果这不是你想要的。

不管怎样,您都需要确保适当的路径位于路径中的/usr/bin之前。例如,您可以在~/.profile中添加以下内容:

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

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

如果你正在使用homebrew,那么brew doctor将告诉你是否正确。

从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(见Problems with pip install numpy - RuntimeError: Broken toolchain: cannot link a simple C program
  5. pip install numpy

看起来您的实际问题只是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,自制程序将自动从此错误中恢复。所以,这是第一个尝试。

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

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

相关问题 更多 >