由于程序中要使用scipy科学计算库,需要在自己的Ubuntu11.04中安装,scipy的官方网页中给出了Python2.x的安装方式,不过文档是2010年左右给出的,有些老;并且我想在Python3.x中安装。虽然有些人在网上说scipy不支持Python3.x,但是有人安装成功,可惜未见教程流出。我不得不费了九牛二虎之力,在尝试了变更安装目录与不同的Python3.x版本之后,终于摸索出了正确的安装方法。现在将其贴在博客上,以供后来者借鉴。
在Ubuntu11.04中为Python3.2.3安装scipy
1.安装合适的Python版本与必要的工具
可以参者Python安装篇来安装合适的Python;
在安装前,推荐安装如下工具:
sudo apt-get install build-essential python3-dev swig gfortran python3-nose
2. 安装ATLAS及LAPACK
在正式安装前,对于双核电脑,要先要禁掉CPU Throtting。由于我使用的是虚拟机,只有一个核,故而不需要此步,但仍然列出:
首先,
sudo cpufreq-selector -g performance
然后,
sudo cp /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
sudo cp /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
sudo cp /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
mkdir BUILD
cd BUILD
../configure -b 32 -Fa alg -fPIC --with-netlib-lapack-tarfile=<这里填入lapack.tgz的目录,我的是/home/xzq/Software/lapack-3.4.2.tgz> --prefix=/usr/local #这里我试过其它目录,但是比较麻烦~
make
cd lib
make shared
make ptshared
cd ..
sudo make install
注意,由于我的系统是32位的,所以在configure的参数中,使用‘-b’制定32位;如果是64位,需要将‘32’换成64位。
此外,这个步骤进行的比较长,在我的电脑上跑了大概1个小时。
3. 安装 UMFPACK with AMD, UFConfig and CHOLMOD
这个是scipy需要的一些库,最好安装。一种方法是直接下载4个库,分别安装;另外就是可以安装包含这些库的套件,也就是SuiteSparse,通过安装这个套件可以方便的完成这些库,当然也要安装一些不必要的库。下载最新的SuiteSparse(4.0.2),解压,进入该目录,比如解压成SuiteSpasre,然后:
进入SuiteSparse_config目录,打开SuiteSparse_config.mk,修改INSTALL_LIB和INSTALL_INCLUDE两个变量的值;如果你的安装路径默认是/usr/local,就不要修改
make
sudo make install #可选,我没进行这步
numpy是另外一个科学计算库,scipy依赖于该科学计算库,故而需要安装。下载最新的numpy(1.6.2),解压之。进入其文件夹,修改site.cfg.example,另存为site.cfg,修改方法如下:
首先,将下列代码的注释符号去掉,或者直接添加,不要漏了DEFAULT
[DEFAULT]
library_dirs = /usr/local/lib
include_dirs = /usr/local/include
对于多核系统,需要去掉如下代码的注释
[blas_opt]
libraries = ptf77blas, ptcblas, atlas
[lapack_opt]
libraries = lapack, ptf77blas, ptcblas, atlas
[amd]
amd_libs = amd
[umfpack]
umfpack_libs = umfpack
对于单核系统(我的就是),需要去掉如下代码的注释
[blas_opt]
libraries = f77blas, cblas, atlas
[lapack_opt]
libraries = lapack, f77blas, cblas, atlas
完成上述步骤后,采用正常的安装方式即可:
python3.2 setup.py build
sudo python3.2 setup.py install --prefix=/usr/local
有一点需要注意,就是要注意你使用的Python版本,这个对于成功与否影响很大。
5. 安装scipy
经过繁琐的步骤,终于等来了最后的时刻,呵呵~。 下载最新的scipy(0.11.0),解压成文件夹,进入到该文件夹中,执行:
python3.2 setup.py build
sudo python3.2 setup.py install --prefix=/usr/local
scipy官网上的教程说,还要添加f2py和python-2.6/site-packages的搜索路径,由于前面我都是安装在/usr/local里的,这个就不用这么麻烦了。到此为之,安装完毕。当然,不要高兴太早,还要小小的试一试才行。
打开Terminal,输入:
$ python3.2.3
>>> import scipy.io as io
如果没有报错,说明可以使用了。
这个步骤真是繁琐啊,不过也是由于Python版本较多,支持力度自然跟不上了。对于Python2.x的支持,可是方便的多了,例如对于Python2.7.1,可以直接执行如下代码安装scipy、numpy和对于matplot的支持库:
sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib