1. 程式人生 > >python package numpy和scipy 的安裝與配置

python package numpy和scipy 的安裝與配置

關於最早要用這個GAT——genomic association tester,最早怕要追溯到去年的這個時候了,安裝一直搞不定,後來也就放下沒有再用。因為是用python寫的,要安裝python以及一系列的package,外行的我幾度放棄幾度磨嘰,今天終於算是半搞定,說是半搞定,因為在安裝SciPy的過程有好多warning,不知道未來跑大的dataset是否會出問題,而且目前只是在我筆記本上wubi安裝的ubuntu上的嘗試,不知道如果安裝在所裡伺服器上能否成功,這個以後會補充在這個日誌裡。目前先把已成功安裝的部分記錄下來。

GAT自然需要先安裝python,然後又提示需要numpy和scipy,這是兩個最重要的依賴,據我粗略所知都是python中用於計算統計方面的包。所用ubuntu 12.04 LTS。

1.安裝python


先到python官網下載python安裝包。然後在命令列下解壓、安裝。python以及package的一般安裝程式簡單概括就是3步: configure, make, make install .$ tar -xvf Python-2.7.5.tar.bz2      #先解壓tar包 $ cd Python-2.7.5
$ ./configure --prefix=/home/fzh/software/     #選擇要安裝的路徑,發現我安裝在預設的/usr/bin/下後,再安裝別的包時會出現許可權不允許的情況,於s是建立另一個路徑安裝。
$ make &&1.7.1 make install     #如果是binary code包,則不需要make和make install
python的可執行檔案在/home/fzh/software/bin/  下,要記得把此路徑寫入~/.bashrc 中,以後呼叫就比較方便了。在我的ubuntu下,
$ vim ~/.bashrc    #在末尾行或任一空行寫入: export PATH="/home/fzh/software/bin:$PATH"  即可。


2. (可選)安裝pip, easy_install


可安裝pip,easy_install 2個常用的安裝工具,兩者用於安裝或解除安裝python package。安裝之前,還需要安裝另一個包setuptools, 可直接下載egg file(已編譯過的?)
$ sh /picb/functgen2/fzh/setuptools-0.6c11-py2.7.egg --prefix=/home/fzh/software/
使用pip 自動安裝p1.7.1akage numpy:
$ pip install numpy
某些包如果不能通過pip install 的話,可手動下載安裝包,解壓後進入安裝包:
$ cd numpy-1.17.1
$ python setup.py install
通過這2個命令來手動安裝。

3. 安裝GAT和所需要的numpy, Cython
 

$ cd genomic-association-tester
$ python setup.py install   #忘記是否需要make了。。。
GAT的使用方法是 gatrun.py *****

numpy安裝簡單,但是在執行gatrun.py 時會報出關於numpy的錯誤,表示某些標頭檔案找不到。根據提示,找到了這些標頭檔案,錯誤發生的原因是它們所在的目錄GAT找不到,所以簡單的方法就是把它們都複製到GAT指示的尋找路徑下,這些標頭檔案所在原來的路徑是:
~/software/lib/python2.7/site-packages/numpy/core/include/numpy/
現在把這個numpy/ 資料夾整體複製到另一個GAT可以找到的地方:
$ cp ~/software/lib/python2.7/site-packages/numpy/core/include/numpy  ~/software/include/python2.7/
補充:這些標頭檔案中有一個叫做 arrayobject.h ,可以試著去find它,在GAT執行的一個c檔案中,提示要呼叫這個標頭檔案numpy/arrayobject.h, 因此在software/ 下: 
$ find . -name numpy/arrayobject.h
找到了它,並且嘗試把它放到一個GAT可以找到的路徑上。而發現同時這個標頭檔案又會呼叫到numpy中的許多其它標頭檔案,於是把numpy/ 資料夾整體複製到GAT能找到的路徑上。


4. 安裝scipy和配置BLAS/LAPACK

安裝scipy需要許多dependences,在scipy的安裝包的install.txt中有提示,其中,對於ubuntu>= 8.10:
You can get all the dependencies as follows:
        sudo apt-get install python python-dev libatlas3-base-dev gcc gfortran g++
其中gcc, gfortran, g++是可以的,python-dev, libatlas3-base-dev 不行。libatlas就是接下來要提到的兩個libraryBlas和Lapack。
scipy的安裝require兩個函式庫(libarary)Blas和Lapack。可直接下載Lapack包,其中包含了blas庫(只是part of Blas,complete set可通過Atlas安裝)。或者使用Atlas,
ATLAS  is a replacement for BLAS and parts ofLAPACK【1】。但是發現Atlas安裝過程中需要disable cpu throttling(節流),這個我試了好久也沒做到,放棄之。發現根據此文http://hi.baidu.com/kaienfr/item/98a1f1bf9fcd4bf563388eb4  中的方法安裝Lapack會非常簡便。
官網下載Lapack,目前是 3.4.2 (2013.06.16) (上地址博文中聲稱是fortran版)http://www.netlib.org/lapack/lapack.tgz
$ tar -xvf lapack.tgz
$ cd lapack-3.4.2
編譯lapack:
把 make.inc.example, 該名稱 make.inc (這個檔案很重要,一般來說,選擇編譯器都,定義編譯引數,設定環境變數等都在這裡設定)。執行:
$ make blaslib       # 編譯生成librefblas.a,可改名為libblas.a
$ make lapacklib    # 編譯生成liblapack.a  此名正好可用,不必改
就這麼兩條命令就完成編譯了blas和lapack的編譯了。把libblas.a 和liblapack.a 放到系統的庫目錄裡,在我這裡就是~/software/lib/ 下。
然後就可以安裝scipy了。

後記:test GAT執行沒有問題,結果出現的一個小問題是q alue無法計算,以後再研究。在伺服器上安裝以後再嘗試。

【1】http://www.scipy.org/scipylib/building/linux.html#debian-ubuntu