CentOS 5.5にvirtualenvを入れて、Python2.7とFlaskの環境を作ったよ!

Flaskでも試そうと思ったけど、CentOS 5.5のPythonは2.4.3だったりして寂しい感じだったのでいろいろ環境整備からして、ようやく環境作り終わった。

[root@shrkw-rad]# python -V
Python 2.4.3

Python2.7のインストール

EPELのyumに2.6系のPythonがあるけど、既存のを汚染しないかよくわからなかったので、ソースコードからコンパイルしてみる。Pythonのコンパイルするのって初めてだ。

[root@shrkw-rad]# wget http://python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2
[root@shrkw-rad]# tar xjf Python-2.7.1.tar.bz2
[root@shrkw-rad]# cd Python-2.7.1
[root@shrkw-rad]# ./configure --prefix=/opt/python2.7 --enable-shared
[root@shrkw-rad]# make
[root@shrkw-rad]# make install

動くか確認。

[root@shrkw-rad]# /opt/python2.7/bin/python -V
/opt/python2.7/bin/python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

動かない!><
ライブラリが足りんとのことなので、lddでみてみる。

[root@shrkw-rad]# ldd /opt/python2.7/bin/python
        linux-gate.so.1 =>  (0x00fef000)
        libpython2.7.so.1.0 => not found
        libpthread.so.0 => /lib/libpthread.so.0 (0x00b82000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b7b000)
        libutil.so.1 => /lib/libutil.so.1 (0x02f96000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00bc8000)
        libm.so.6 => /lib/libm.so.6 (0x00b9d000)
        libc.so.6 => /lib/libc.so.6 (0x00a20000)
        /lib/ld-linux.so.2 (0x009fc000)

libpython2.7.so.1.0が足りない!
コンパイルして作成されはしているので、シンボリックリンクを張る。

[root@shrkw-rad]# ln -s /opt/python2.7/lib/libpython2.7.so.1.0 libpython2.7.so.1.0
[root@shrkw-rad]# /opt/python2.7/bin/python -V
Python 2.7.1

動いた!

virtualenvのインストール

ついでにvirtualenvwrapperも入れる。

[root@shrkw-rad]# easy_install virtualenv
[root@shrkw-rad]# easy_install virtualenvwrapper

virtualenvwrapperのコマンドを使えるように設定。

[root@shrkw-rad]# export WORKON_HOME=/opt/virtualenv
[root@shrkw-rad]# source virtualenvwrapper.sh

仮想環境作成

2.7系のPythonを使うように。

[root@shrkw-rad]# mkvirtualenv --python=/opt/python2.7/bin/python2.7 myvenv
Running virtualenv with interpreter /opt/python2.7/bin/python2.7
New python executable in myvenv/bin/python2.7
Also creating executable in myvenv/bin/python
Installing setuptools............................done.
virtualenvwrapper.user_scripts creating /opt/virtualenv/myvenv/bin/predeactivate
virtualenvwrapper.user_scripts creating /opt/virtualenv/myvenv/bin/postdeactivate
virtualenvwrapper.user_scripts creating /opt/virtualenv/myvenv/bin/preactivate
virtualenvwrapper.user_scripts creating /opt/virtualenv/myvenv/bin/postactivate
virtualenvwrapper.user_scripts creating /opt/virtualenv/myvenv/bin/get_env_details

できたっぽい!
確認してみよう。

(myvenv)[root@shrkw-rad]# python -V
Python 2.7.1

やったー。

(myvenv)[root@shrkw-rad]# easy_install Flask  

確認する。

(myvenv)[root@shrkw-rad]# python
Python 2.7.1 (r271:86832, Jan 21 2011, 20:07:19) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Flask
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Flask
>>> from flask import Flask
>>> 

ちゃんと入ってる!!

virtualenvを抜ける。

(myvenv)[root@shrkw-rad]# deactivate

元環境を汚染してないか確認。

[root@shrkw-rad]# python
Python 2.4.3 (#1, Nov 11 2010, 13:34:43) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from flask import Flask
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ImportError: No module named flask
>>> 

大丈夫でしたー。

というわけで環境構築完了!!

あとはiPythonとPipを使うようにせねば!!!