您的问题是需要安装Fortran编译器来构建
scipy
。此外,如果您已经有一个禁用了Fortran支持的
numpy
,则可能需要替换它。一些苹果预安装的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
。但如果你现在尝试这样做,你会收到一个错误提示,上面写着“GNU Fortran现在作为GCC的一部分提供,可以通过以下方式安装:
brew install gcc
”。)
如果你想使用pip
安装scipy
,那么如果你没有它,首先要获取它。在10.7和10.8中,苹果预装的Python中包括easy_install
但不包括pip
,所以最简单的方法是:
sudo easy_install pip
然而,您可能希望考虑使用
virtualenv
而不是全局安装(在这种情况下,您还需要在以下命令中删除
sudo
)。
现在,您已经拥有了
gfortran
和
pip
,您只需要执行以下操作即可:
sudo pip install --upgrade numpy
sudo pip install scipy
注意事项:
上述指南适用于苹果预装的Python版本。如果您使用不同版本的Python,您应该考虑不这样做。保持路径、安装包等同步会是一场噩梦。唯一的例外是您需要Python 3.x版本,此时从python.org或Homebrew安装是完全合理的。不会发生冲突,因为
python
、
pip2.7
等将用于Apple的Python;
python3
、
pip3.3
等将用于3.x版本。
如果您已经有了
pip
,但担心它可能过时,可以使用
pip install --upgrade pip
进行更新。(除了安全和健壮性方面的好处外,这还可以通过使您与某些科学堆栈或其他模块的二进制轮兼容来节省大量时间。)
对于大多数非苹果Python安装(甚至可能是10.9或10.10的苹果安装; 我没有检查过),您不应该使用
easy_install
来安装
pip
。请遵循
pip
install instructions。但首先确保您没有它。
- 如果您使用
virtualenv
/ venv
,您的虚拟环境将已经包含 pip
。
- Python 3.4或更高版本可能(如果来自python.org安装程序,则会)包括
pip
bootstrap。如果您的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,并且想要避免路径问题,您需要做两件事:
首先,绝不要安装任何包含脚本或二进制文件(包括pip本身)在多个Python中的Python包。例如,如果您为Apple 2.7和Homebrew 2.7都安装了ipython,则两者都将尝试创建名为/usr/local/bin/ipython和/usr/local/bin/ipython-2.7的脚本。如果您很幸运,一次安装将失败。否则,它们都会成功,一个将覆盖另一个,您将无法运行被覆盖的版本。
其次,请确保备选Python的脚本和二进制文件的路径在PATH中位于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
- 其他路径
无论是哪个路径,您都需要编辑您的PATH变量。
如果您想影响GUI应用程序(以及LaunchAgents等),显然不再支持这样做的方法,但在Lion中QA1067似乎仍然有效。 这也是Homebrew FAQ和Python FAQ建议的方法。
如果你只关心命令行会话(包括Terminal.app和远程ssh),你可以只编辑相应的配置文件,这是标准的Unix操作。哪个配置文件适合取决于你想要影响什么。(所有用户还是只有一个用户?bash还是任何shell?等等)如果你不知道你想要哪一个,你真的应该做一些研究。如果你不想学习,只需使用
~/.profile
,然后不要抱怨它不是你想要的。
无论如何,你需要确保适当的路径在PATH之前出现
/usr/bin
。例如,你可以将以下内容添加到
~/.profile
中:
PATH=/usr/local/bin:$PATH
export PATH
(在生效前,您需要创建一个新终端或运行该脚本。)
(如果您正在使用homebrew,则可以通过运行
brew doctor
来确认是否正确安装。)