如何使用pip和homebrew安装SciPy堆栈?

时间:2014-10-11 22:08:31

标签: python numpy matplotlib scipy

我试图将基本的scipy堆栈(numpy,scipy,matplotlib,pandas,sympy,ipython,nose)安装到virtualenv中;目前,我正在使用OSX Mountain Lion。从这些软件包的安装页面,以及这里和网络上的各种线程,似乎只需要pip就可以轻松安装pandas,sympy和nose(尽管有些列表numpy / scipy / etc作为依赖项)。

但是,正好安装numpy,scipy,matplotlib以及某种程度上的ipython *似乎存在冲突和复杂的指令。单独使用pip安装似乎不是安装这些软件包的正确方法;似乎某些依赖项需要与自制软件一起安装,但是在pip安装numpy / scipy / etc之前,各个地方列出了不同的软件包以进行brew安装。在pip安装numpy,scipy和matplotlib之前,是否有一个全面且最新的软件包依赖项列表需要与自制软件一起安装?

就像一张纸条一样,我已经看过点击homebrew / python来正确安装numpy,scipy和matplotlib与homebrew,但我想安装到virtualenv中我不认为我可以使用自制的做法。

非常感谢任何帮助;提前谢谢!

*另外,对于ipython,安装页面说pip install ipython [all]应该足够了,但是其他一些来源(http://www.coderstart.com/setup/python-setup.html; http://www.lowindata.com/2013/installing-scientific-python-on-mac-os-x/)似乎暗示了qt,pyqt,在pip安装ipython之前,需要首先安装和zmq软件包;是必要的自制软件安装还是根据ipython安装页面进行安装是否正常?

2 个答案:

答案 0 :(得分:10)

在这里回答我自己的问题,但希望这是有帮助的;如果有任何错误,请随时纠正。原始版本是一个巨大的文本墙,所以我添加了一个tl; dr添加到顶部,只是希望使这个过程更加清晰。

tl; dr:在terminal / bash中,进入virtualenv(如果要安装到一个)并按顺序输入这些命令。这是为OSX Mountain Lion测试的。

pip install numpy
brew install gcc
pip install scipy
brew install freetype
pip install matplotlib
pip install nose
pip install pandas
pip install sympy
pip install ipython[all]
brew install pyqt
brew install qt
brew install sip
echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile
source ~/.bash_profile

*注意:brew安装pyqt可能已经安装了qt和sip;如果是这样,安装pyqt后无需安装qt和sip。对于倒数第二行,直接将该行转换为〜/ .bash_profile可能更可靠,因为它可能需要位于〜/ .bash_profile内容的顶部。另外,brew install pandoc是可选的,但是ipython notebook的nbconvert命令必须正常工作。

编辑10/13/14 [请参见底部编辑] :编辑〜/ .bash_profile中的PYTHONPATH会强制虚拟环境继承全局包;如果您希望能够创建孤立的环境,请不要执行最后两个步骤。相反,假设安装了virtualenvwrapper,编辑包含scipy内容的virtualenv下bin目录中的本地postactivate和预先激活脚本。

在postactivate中,输入:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH 

在预先激活中,输入:

unset PYTHONPATH

这应该编辑PYTHONPATH,当具有scipy东西的virtualenv被激活以便ipython qtconsole工作时,但是当virtualenv被停用时应该重置PYTHONPATH,以便其他虚拟环境不受PYTHONPATH更改的影响。


以下是长篇叙述版本。

无论如何,从我最初发布问题后的一些反复试验中,我发现以下步骤有效;我使用了上面链接的两组指令作为一般指南,并在OSX Mountain Lion上进行了测试。

在激活将要安装软件包的virtualenv之后,首先pip install numpy;这应该按预期工作并且应该安装numpy(注意,应该首先安装numpy,因为scipy堆栈中的许多其他包依赖于numpy)。

现在,在安装scipy之前,有几个消息来源注意到gfortran(这似乎是最常见的,但我认为任何fortran编译器都应该工作)需要安装; brew install gfortran返回一个错误,指出gcc现在包含gfortran所以gfortran公式已被弃用。因此,我们酿造安装gcc(请注意,即使xcode命令行工具,通常在自制软件之前安装,已经包含gcc,但它的gcc版本在某种程度上不起作用或者不包括gfortran)。安装gcc之后,pip install scipy按预期工作,并且应该安装scipy。快速抛开:brew安装gcc安装gcc以及一堆依赖项,即cloog,gcc,gmp,isl,libmpc,mpfr。 [这些应该都安装在/ usr / local / Cellar中,这是自制软件的默认安装位置。]

为了安装matplotlib,首先需要安装freetype,所以我们brew install freetype;这应该安装freetype和libpng,这似乎是一个freetype依赖。之后,pip install matplotlib按预期工作,成功安装matplotlib。请注意,matplotlib安装时使用mock(需要运行matplotlib测试套件),pyparsing(数学文本支持需要),python-dateutil(日期轴支持需要),六个(没有给出理由)以及它。 [这些都应该与virtualenv中的任何其他pip安装一起安装到virtualenv中的site-packages目录中。]

安装nose,sympy和pandas只需要安装pip,因为他们没有任何需要brew安装的依赖项。但是,其中,请注意至少pandas取决于numpy,因此在安装numpy之后安装pandas(不确定其他)可能是首选。另请注意,pandas会安装pytz(用于时区计算)。

安装ipython非常简单,但设置起来有点复杂。作为一个提示,ipython可以与qt控制台和称为ipython notebook的东西一起使用,它们具有各种好处。您可以选择只使用pip install ipython安装ipython并根据需要安装可选的依赖项,但我使用pip install ipython [all]安装了所有主要的可选依赖项。这将安装ipython,以及许多其他软件包依赖项(使用backports.ssl-match-hostname(来自tornado)安装,certifi(来自tornado),docutils(来自sphinx),gnureadline,ipython,jinja2,markupsafe(来自jinja2) ,numpydoc(来自ipython [all]),pygments,pyzmq,sphinx,tornado)。这应该是ipython使用标准ipython shell,qt控制台和ipython笔记本的良好基础。但是,如果您想使用qt控制台或笔记本电脑,它还没有完全设置。

要使用qt控制台,必须安装pyqt,qt和sip软件包,因为这些是无法使用pip安装的依赖项;从经验来看,brew install pyqt似乎安装了所有三个软件包,但单独安装三个软件包可能是一个更安全的选择。完成后,进入〜/ .bash_profile并添加行' export PYTHONPATH = / usr / local / lib / python2.7 / site-packages:$ PYTHONPATH'它;然后' source~ / .bash_profile'在终端重新加载shell。这应该成功地允许启动qt控制台。 [我不完全确定为什么需要添加这一行,因为我已经编辑了PATH变量以将/ usr / local / bin放在/ usr / bin之前,但也许qt / pyqt / sip仍在尝试用系统默认的python而不是自制的安装python链接自己。]

据我所知,笔记本电脑似乎开箱即用,但有一点需要注意:为了使用nbconvert(将笔记本转换为不同的文件格式),必须安装pandoc软件包,大概是自制软件包。像qt / pyqt / sip一样,它不能用pip安装,这就是为什么它没有安装pip install ipython [all]。

编辑10/13/14:显然,编辑PYTHONPATH会使空虚拟环境无效,使全局包也可以在virtualenv(how to isolate virtualenv from local dist-packages?)中使用;在大多数情况下,假设你想要一个新的环境,但是ipython qtconsole正常工作是必要的,这在很大程度上违背了virtualenv的目的。

修复是编辑(假设已安装virtualenvwrapper)本地postactivate和预先激活virtualenv的bin文件中的脚本。在postactivate中,输入行" export PYTHONPATH = / usr / local / lib / python2.7 / site-packages:$ PYTHONPATH;在预先激活中,输入行"重置PYTHONPATH"。不要执行原始序列的最后两步,或删除添加到〜/ bash_profile的行。这应该使得只有当激活了我们安装的软件包的virtualenv时才会对PYTHONPATH进行更改,以便qtconsole工作,但在virtualenv停用之前重置,以便其他环境不受影响。

答案 1 :(得分:1)

我在OSX 10.9上,但我很幸运,遵循这些说明并获得与上面概述的大致相同的环境 http://hackercodex.com/guide/python-development-environment-on-mac-osx/

希望这有帮助