2014-10-11 47 views
6

我试图安装基本的scipy栈(numpy,scipy,matplotlib,pandas,sympy,ipython,nose)到virtualenv中;目前,我正在使用OSX Mountain Lion。从这些软件包的安装页面,以及这里和网络上的各种线程看来,熊猫,sympy和鼻子都可以用pip轻松安装(尽管某些列表numpy/scipy /等作为依赖关系)。如何用pip和自制软件安装SciPy堆栈?

但是,似乎有正确安装numpy,scipy,matplotlib和某种程度上ipython *的矛盾和种类繁琐的说明。单独使用pip安装似乎不是安装这些软件包的正确方法;似乎一些依赖需要与自制软件一起安装,但不同的地方列出不同的软件包,以便在pip安装numpy/scipy/etc之前进行brew安装。在pip安装numpy,scipy和matplotlib之前,是否有需要使用自制软件安装的全面的当前软件包依赖关系列表?

就像一个说明,我已经看了点击自制软件/ python适当安装numpy,scipy和matplotlib自制软件,但我想安装到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包需要被brew在pip安装ipython之前先安装;根据ipython安装页面来安装需要的自制安装还是很不错的?

回答

10

这里回答我的问题,但希望这是有帮助的;如果有任何错误,请随时纠正。原始版本是一个巨大的文本墙,所以我已经将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 

*注:冲泡安装PyQt的可能已经安装QT和SIP;如果是这样,安装pyqt后无需安装qt和sip。对于第二行到最后一行,直接将该行转换为〜/ .bash_profile可能更加可靠,因为它可能需要位于〜/ .bash_profile内容的顶部。此外,brew安装pandoc是可选的,但ipython笔记本的nbconvert命令必须正常工作。

编辑14年10月13日[见在底部编辑]:编辑PYTHONPATH在〜/ .bash_profile中势力虚拟环境继承全局包;如果你想能够制造孤立的环境,不要做最后两步。相反,假设安装了virtualenvwrapper,请编辑包含scipy内容的virtualenv下bin目录中的本地postactivate和predeactivate脚本。

在postactivate,请输入:

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

在predeactivate,请输入:

unset PYTHONPATH 

这应该修改PYTHONPATH时当SciPy的东西virtualenv中被激活,使得IPython中qtconsole作品,但应该重置PYTHONPATH,当其他virtualenvs不受PYTHONPATH变化的影响。


下面是长篇叙述版本。

无论如何,从一些试验和错误后,我最初发布这个问题,我发现下面的步骤工作;我使用了上面作为一般指南链接的两套指令,并在OSX Mountain Lion上进行了测试。

激活该软件包将要安装的virtualenv后,第一PIP安装numpy的;这应该按预期工作,应该安装numpy(注意numpy应该先安装,因为scipy栈中的很多其他包依赖于numpy)。

现在,在安装之前SciPy的几个消息人士指出,gfortran(这似乎是最常见的,但我想任何Fortran编译器应该工作)需要安装; brew安装gfortran返回一个错误,说gcc现在包含gfortran,所以gfortran公式已被弃用。因此,我们酿造安装gcc(注意,即使Xcode中的命令行工具,这是自制之前一般安装,已经包含了GCC,其版本的gcc不知何故不工作或不包括gfortran)。安装gcc之后,pip install scipy按预期工作,并且应该安装scipy。快速旁白:冲泡安装gcc安装GCC,以及一堆依赖关系,即cloog,GCC,GMP,ISL,libmpc,MPFR的。 [这些应该全部安装到/ usr/local/Cellar,这是自制软件的默认安装位置。]

对于安装matplotlib,需要首先安装freetype,因此我们需要安装freetype;这应该安装freetype和libpng,这似乎是一个freetype依赖。之后,pip安装matplotlib按预期工作,成功安装matplotlib。请注意,matplotlib安装了mock(需要运行matplotlib测试套件),pyparsing(mathtext支持需要),python-dateutil(需要日期轴支持),6(无理由)。 [这些都应该和virtualenv一起安装到virtualenv中的任何其他点子安装到site-packages目录中。]

安装nose,sympy和pandas只需要安装pip,因为它们没有任何需要进行brew安装的依赖项。但是,其中,请注意,至少熊猫取决于numpy,因此安装numpy后安装熊猫(不知道其他人)可能是首选。此外,请注意,熊猫安装pytz(用于时区计算)。

安装IPython的是非常简单的,但设置它是一个小更令人费解。首先,ipython可以与qt控制台和称为ipython notebook的东西一起使用,它具有各种优点。你可以选择只安装ipython和pip install ipython,然后根据需要安装可选的依赖项,但是我用pip install ipython [all]安装了所有主要的可选依赖项。这会安装ipython以及很多其他的软件包依赖(安装时使用backports.ssl-match-hostname(来自龙卷风),certifi(来自龙卷风),docutils(来自sphinx),gnureadline,ipython,jinja2,markupsafe(来自jinja2) ,numpydoc(来自ipython [all]),pygments,pyzmq,狮身人面像,龙卷风)。这应该是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]一起安装的原因。

编辑14年10月13日:因此很明显,编辑PYTHONPATH将抵消空的虚拟环境,从而提供全球封装在一个的virtualenv(how to isolate virtualenv from local dist-packages?);这在大多数情况下都会破坏virtualenv的目的,假设您想要一个全新的环境,但是ipython qtconsole正常工作是必需的。

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

+0

回答你自己的问题是好的,但是这个叙述性的文本墙有点令人反感,认为这个过程基本上是一系列shell命令,所以报告_exactly_你作为代码格式的行执行了什么。我怀疑 – Deditos 2014-10-12 12:26:07

+0

[勘误]我怀疑有些用户会犯拼写错误,他们很难检查你的答案。 – Deditos 2014-10-12 12:35:43

+0

@Deditos嗯,是的,谢谢你指出了!我想我有点太兴奋了,并且被描述带走了。我对删除所有这些叙述感到不爽,但我会编辑tl; dr以更清晰/包含代码格式化的行并将其移至顶端。 – thereislight 2014-10-12 17:10:07