もうシステムのpythonいじるのやめよう
theanoというパッケージをインストールしたら、pythonのバージョンが原因でエラーになったので、新しくpythonをインストールした。
それで、システムのpythonにシンボリックリンク貼ったりしてたら、前に作ってたプログラムが動かなくなった。
ということで、
新しいバージョンのpythonはローカルに作る
ここを参考に。
python2.7をローカルにインストールする。
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz tar xzf Python-2.7.2.tgz cd python-2.7.2 ./configure --enable-shared make make altinstall prefix=/home/hoge/usr/local exec-prefix=/home/hoge/usr/local
これで、hogeユーザーのホームディレクトリに新しくpythonを導入できた。
プロジェクトごとにvirtualenv作る
パッケージはpip使うのに、easy_installでpipをインストールする二度手間が要らないと思うので、直接virtualenvを作る。
シェルスクリプトを書くと、
#!/bin/sh # virtualenvのバージョン指定 VERSION=1.10.1 ENV=py-env0 ENV_OPTS='--no-site-packages --distribute' # プロジェクトで使いたいpythonのバージョン指定。 PYTHON=/home/hoge/usr/local/bin/python2.7 URL_BASE=http://pypi.python.org/packages/source/v/virtualenv curl -O $URL_BASE/virtualenv-$VERSION.tar.gz tar xzf virtualenv-$VERSION.tar.gz $PYTHON virtualenv-$VERSION/virtualenv.py $ENV_OPTS $ENV rm -rf virtualenv-$VERSION $ENV/bin/pip install virtualenv-$VERSION.tar.gz
python2.7で作ったvirtualenvなので、この環境下ではpython2.7で動作する。libpython.aを使いたかったら適宜ローカルにインストールすればよろし。
libpython2.7.soがないよー
で、pythonを実行してみると、
(py-env)$ python python2.7: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
え、ないの?
$ ls /home/hoge/usr/local/lib libpython2.7.so libpython2.7.so.1.0 pkgconfig python2.7
libpython2.7.so、いた。ファイルは存在してる。
lddで確認すると
ldd /usr/local/bin/python2.7 libpython2.7.so.1.0 => not found libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e2ca00000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003e2c600000) libutil.so.1 => /lib64/libutil.so.1 (0x0000003e3a000000) libm.so.6 => /lib64/libm.so.6 (0x0000003e2c200000) libc.so.6 => /lib64/libc.so.6 (0x0000003e2be00000) /lib64/ld-linux-x86-64.so.2 (0x0000003e2ae00000)
やっぱりいないらしい。なんか/lib64/にシンボリックリンク貼ればいいのかな。
$ sudo ln home/hoge/usr/local/lib/libpython2.7.so.1.0 /lib64/libpython2.7.so.1.0
これでおっけー。