Python下的大多数工具包安装都很简单,只需要执行 “python setup.py install xxx”命令即可。

然而,由于SciPy和numpy这两个科学计算包的依赖关系较多,安装过程较为复杂。网上教程较为混乱,而且照着做很多基本不能用。在仔细研读各个包里的README和INSTALL之后,终于安装成功。现总结一下,让需要的人少走弯路。

官方提供的安装方法:Installing the SciPy Stack

1) Debian/Ubuntu:

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

2) Redhat/CentOS

sudo yum install numpy scipy python-matplotlib ipython python-pandas sympy python-nose

sudo pip install --upgrade ipython

 

下面介绍手动安装方法

系统环境:

OS版本:Ubuntu 12.04.4 LTS / Linux ubuntu 3.2.0-60-generic x86_64 GNU/Linux

Python版本:Python 2.7.6

gcc版本:gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

 

各个安装包版本:

nose-1.3.1

lapack-3.5.0

atlas-3.10.1

scipy-0.11.0

numpy-1.6.2

依赖关系:scipy的安装需要依赖于numpy、lapack、atlas(后两者都是线性代数工具包,不清楚的自行google),而numpy和sci的测试程序的运行又依赖于nose,因此,整个安装过程必须要按顺序执行的,否则是无法执行下去的。

 

安装步骤:

1、安装nose

这个安装比较简单,解压缩nose的安装文件,进入nose的目录,直接运行setup.py即可:

下载nose: https://nose.readthedocs.org/en/latest/

tar -zxvf nose-1.3.1.tar.gz

cd nose-1.3.1

python setup.py install

检验安装成功:

#python
>>> import nose
>>> nose
<module 'nose' from 'nose/__init__.pyc'>

 

2、安装lapack

由于最新版本的ATLAS可以直接集成lapack的安装压缩文件进行编译,因此,如果仅在python下使用的话,可以不用安装lapack。只需要下载压缩文件:lapack-3.5.0.tgz

官方下载地址: http://www.netlib.org/lapack/

 

3、安装atlas

这个的安装主要是配置一些选项,包括配置成64位库文件、位置无关的以及共享的链接库。详细的配置说明在atlas安装包 doc/ 下的pdf文件中,可查阅。

下面是我的安装过程:

下载地址: http://sourceforge.net/projects/math-atlas/,下载最新版本:atlas3.10.1.tar.bz2

tar -jxvf atlas3.10.1.tar.bz2

cd ATLAS

mkdir myobj64

cd myobj64

../configure -b 64 -Fa alg -fPIC -shared --prefix=/配置atlas的安装路径/atlas --with-netlib-lapack-tarfile=/lapack安装压缩文件存放的目录/lapack-3.4.2.tgz

sudo ../configure -b 64 -D c -DPentiumCPS=3901.000 -Fa alg -fPIC  --prefix=/opt/atlas3.10.1/ --with-netlib-lapack-tarfile=/opt/lapack-3.5.0/lapack-3.5.0.tgz

其中的参数说明如下:

       -b 指定编译出库的类型(32位库还是64位库)
       -D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz /proc/cpuinfo 得到
            numpy_scipy/ATLAS/my64Obj$ grep MHz /proc/cpuinfo
               cpu MHz        : 3901.000
               cpu MHz        : 3901.000
               cpu MHz        : 3901.000
               cpu MHz        : 3901.000

        -Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库

       –prefix 为安装路径
       –with-netlib-lapack 则是制定lapack库文件(此时lapack库文件还没有生成,先随便指定一个)
 
执行上述命令出错,提示

Unable to find usable compiler for F77; abortingMake sure compilers are in your path, and specify good compilers to configure
(see INSTALL.txt or 'configure --help' for details)make[1]: *** [atlas_run] Error 8
make[1]: Leaving directory `/home/homer/Downloads/tool_server/python/numpy_scipy/ATLAS/my64Obj'
make: *** [IRun_comp] Error 2
ERROR 512 IN SYSCMND: 'make IRun_comp args="-v 0 -o atlconf.txt -O 1 -A 26 -Si nof77 0 -V 480  -Fa ic '-fPIC' -Fa sm '-fPIC' -Fa dm '-fPIC' -Fa sk '-fPIC' -Fa dk '-fPIC' -Fa xc '-fPIC' -Fa gc '-fPIC' -Fa if '-fPIC' -b 64"'
mkdir src bin tune interfaces
cd src ; mkdir testing auxil blas lapack pthreads threads
cd src/blas ; \
           mkdir f77reference reference gemv ger gemm kbmm \
                 level1 level2 level3 pklevel3

 

这是因为Ubuntu系统没有F77编译器,需要安装,安装命令如下:

sudo apt-get install fort77

sudo apt-get install gfortran     # 安装f90

注:这个配置时间非常长,在Core i7 处理上,大概1个小时左右

make

make check       执行一些检查过程,保证没有问题之后再进行安装

make time

make install

至此,atlas安装完成。不过我们要记录下编译过程中所用的fortran编译器类型,这个信息在下面安装numpy和scipy的时候要用。还是在目录 obj64/ 下,执行

fgrep "F77 =" Make.inc
可以看到  F77 = gfortran,记下这个编译器类型 gfortran.

 

4、安装numpy

numpy和scipy的安装过程都要显式的指明所用fortran编译器的类型,而且要与前面编译atlas时一致(在本文中即:gfortran),这一点非常重要,否则很多功能都会出错。

首先配置numpy目录下的site.cfg文件,指明atlas库的位置:

下载地址: http://packages.ubuntu.com/search?keywords=python-numpyhttps://pypi.python.org/pypi/numpy(推荐)

下载最新版本: numpy-1.8.1.tar.gz

tar -zxvf numpy-1.8.1.tar.gz

cd numpy-1.8.1

cp site.cfg.example site.cfg

vim site.cfg

配置成如下格式:

[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include

[blas_opt]
libraries = f77blas, cblas, atlas

[lapack_opt]
libraries = lapack, f77blas, cblas, atlas

[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack

 

接下来配置安装numpy所需要的Fortran编译器类型:

如果前面得到的Fortran编译器是gfortran的话,执行:

 python setup.py build --fcompiler=gnu95

如果前面得到的Fortran编译器是g77的话,执行:

 python setup.py build --fcompiler=gnu

然后执行

python setup.py install

安装完成

 

5、安装scipy

与安装numpy类似,下载地址: https://pypi.python.org/pypi/scipy,下载最新版本:scipy-0.13.3.tar.gz

tar -zxvf scipy-0.13.3.tar.gz

cd scipy-0.13.3

vim site.cfg

配置成如下格式:

[DEFAULT]
library_dirs = /usr/local/lib:/atlas的安装目录/atlas/lib
include_dirs = /usr/local/include:/atlas的安装目录/include

[blas_opt]
libraries = f77blas, cblas, atlas

[lapack_opt]
libraries = lapack, f77blas, cblas, atlas

[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack

 

接下来配置安装numpy所需要的Fortran编译器类型:

如果前面得到的Fortran编译器是gfortran的话,执行:

 python setup.py build --fcompiler=gnu95

如果前面得到的Fortran编译器是g77的话,执行:

 python setup.py build --fcompiler=gnu

 

然后执行

python setup.py install

安装完成

 

然后可以在python下执行相应的测试程序:

homer@ubuntu:~$ python
Python 2.7.6 (default, Jan 25 2014, 12:41:48) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nose
>>> nose
<module 'nose' from '/usr/local/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg/nose/__init__.pyc'>
>>> import numpy
>>> numpy
<module 'numpy' from '/usr/local/lib/python2.7/site-packages/numpy/__init__.pyc'>
>>> import scipy
>>> scipy
<module 'scipy' from '/usr/local/lib/python2.7/site-packages/scipy/__init__.pyc'>
>>> numpy.test('full')
Running unit tests for numpy
等待。。。
>>> scipy.test('full')
Running unit tests for scipy
等待。。。

 

到这里,整个安装过程结束。

 

新增安装  matplotlib

这个包需要依赖  numpy  和libpng

上面numpy已经安装 

 

安装 libpng

1 下载http://libmng.com/pub/png/libpng.html

2  解压 

3  安装    

 ./configure  --prefix=ZXX

make install

安装 matplotlib

1  下载  http://matplotlib.org/

2  安装

  python setup.py build

   python setup.py install

 

Python ATLAS + NumPy + SciPy + Theano 科学计算环境搭建

Ubuntu下安装scipy全过程 (主要是安装atlas)