root権限がない一般人が,python2系列をインストールする手順についてのメモ.
一言概要
ソースからビルドします.
なぜ必要か
root権限を持つユーザはこんなことを考える必要はほとんどない.
しかし,root権限のないただの人の場合,pipやeasy_installなどでたった1行で済むパッケージのインストールすらできない(というのは一部嘘ですが :-p ).また,共用マシン環境の場合,自分の都合だけで勝手にpythonのバージョンを上げたりパッケージを追加更新したりできない点もネックになる.
インストールする
- インストール先: /home/akisato/src/downloads/python-2.7.6rc1とする.
- python: ちょっと古いけど,python 2.7.6 RC1を想定.
- OS: CentOS 6系列を想定するが,たぶん他のlinux OSでもOK.
bzip2
これがないと,あとで痛い目に遭う.
参考:
- CentOS5.5にPython2.7&Mercurialをインストールしようとしたら色々とハマったので http://d.hatena.ne.jp/banana-umai/20110813/1313210348
- Python: Source install of 2.6 and mercurial, bz2 error http://stackoverflow.com/questions/5873544/python-source-install-of-2-6-and-mercurial-bz2-error
# cd ~/tmp
# wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
# tar xzf bzip2-1.0.6.tar.gz
# cd bzip2-1.0.6
# make -f Makefile-libbz2_so
# make
# make install PREFIX=/home/akisato/src/downloads/bzip2-1.0.6
# export CFLAGS=-I/home/akisato/src/downloads/include
# export CPPFLAGS=$CFLAGS
# export LDFLAGS=-L/home/akisato/src/downloads/lib
python本体
たまにtheanoのようにダイナミックリンクライブラリを要求するパッケージがあったりするので,要注意.この問題の回避のために,単にconfigureで--enable-sharedをするだけだと副作用が出るので,-rpathを指定して回避する1.
# cd ~/tmp
# wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6rc1.tgz
# tar xzf Python-2.7.6rc1.tgz
# cd Python-2.7.6
# ./configure --prefix=/home/akisato/src/downloads/python-2.7.6rc1 --with-threads --enable-shared LDFLAGS=-Wl,-rpath,/home/akisato/src/downloards/python-2.7.6rc1/lib
# vi Makefile
CCSHARED=-fPIC
# make
# make install
# export PATH=/home/akisato/src/downloads/python-2.7.6rc1/bin:${PATH}
# export PYTHONPATH=/home/akisato/src/downloads/python-2.7.6rc1/lib/python2.7/site-packages
PATHやPYTHONPATHは,後々のために ~/.bashrc とかに書いておいた方が良い.
BLAS
参考:
yumを使わずにCentOS5.5にnumpyとscipyをインストールする http://yuku-tech.hatenablog.com/entry/20110325/1301048750
# cd ~/tmp
# wget http://www.netlib.org/blas/blas.tgz
# tar xzf blas.tgz
# cd BLAS
# gfortran -O3 -m64 -fPIC -c *.f
# ar r libfblas.a *.o
# ranlib libfblas.a
# rm -rf *.o
# cp libfblas.a /home/akisato/lib # 永続的に残す場所へコピー
# gfortran -O3 -m64 -fPIC -shared *.f -o libfblas.so
# cp libfblas.so /home/akisato/lib # 永続的に残す場所へコピー
# export BLAS=/home/akisato/lib/libfblas.so # scipyインストールの時だけ見えていればOK
LAPACK
# cd ~/tmp
# wget http://www.netlib.org/lapack/lapack.tgz
# tar xzf lapack.tgz
# cd lapack
# cp INSTALL/make.inc.gfortran make.inc
# vi make.inc
OPTS = -O2 -m64 -fPIC
NOOPT = -m64 -fPIC
# make lapacklib
# cp liblapack.a /home/akisato/lib # 永続的に残す場所へコピー
# export LAPACK=/home/akisato/lib/liblapack.a # scipyインストールの時だけ見えていればOK
numpy
BLAS, LAPACKなしでもインストールできるが,あるなら見えていた方が良い.キチンとパス設定をしておかないと,さっきインストールしたpythonを使ってくれないので,注意.
# which python
/home/akisato/src/downloads/python-2.7.6rc1/bin/python
# wget http://sourceforge.net/projects/numpy/files/NumPy/1.8.0/numpy-1.8.0.tar.gz/download --no-check-certificate
# tar xzf numpy-1.8.0.tar.gz
$ cd numpy-1.8.0
$ python setup.py build
$ python setup.py install
scipy
環境変数CFLAS, CCFLAGS, LDFLAGSを設定していると,scipy buildスクリプトの設定を上書きしてしまうらしいので,buildの前に消去しておいた方が良い.
# unset CFLAGS
# unset CCFLAGS
# unset LDFLAGS
# wget http://sourceforge.net/projects/scipy/files/scipy/0.14.0/scipy-0.14.0.tar.gz/download
# tar xzvf scipy-0.14.0.tar.gz
# cd scipy-0.14.0
# python setup.py build
# python setup.py install
easy_install
これさえあれば,easy_install <ライブラリ名>で簡単にpythonライブラリがインストールできる.
# cd ~/tmp
# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-3.4.1.tar.gz --no-check-certificate
# tar xzf setuptools-3.4.1.tar.gz
# cd setuptools-3.4.1
# python ez_setup.py
pip
easy_installよりこっちの方が便利.
# easy_install pip
# pip freeze
(すでにインストールしたパッケージが表示されればOK)
easy_install経由でpipがインストールできない場合には,get-pip.pyを使う.
# wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
# python get-pip.py
-
一つ前のLDFLAGSに上書きされていないと良いなと思いつつたぶん大丈夫だろう. ↩