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

我正在尝试将基本的scipy堆栈(numpy,scipy,matplotlib,pandas,sympy,i python,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和zmq包需要在pip之前先进行brew安装安装ipython;是必要的自制软件安装,还是根据ipython安装页面进行pip安装?

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

tl; dr:在终端/ 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;在预先激活中,输入行”reset PYTHONPATH“.不要执行原始的最后两步序列,或删除添加到〜/ bash_profile的行.这应该使得只有当激活了我们安装的包的virtualenv时才会对PYTHONPATH进行更改,以便qtconsole工作,但在virtualenv停用之前重置,这样其他环境不会受到影响.

相关文章
相关标签/搜索