Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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に上書きされていないと良いなと思いつつたぶん大丈夫だろう. 

_akisato
All the posts are of a fanciful creature, ponta.
https://github.com/akisatok
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした