LoginSignup
32
36

More than 5 years have passed since last update.

root権限がないときのpython・numpy・scipyのソースからのインストール on Linux

Last updated at Posted at 2015-01-17

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

  1. 一つ前のLDFLAGSに上書きされていないと良いなと思いつつたぶん大丈夫だろう. 

32
36
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
36