CentOS5.5にPython2.6.6をインストールする。

Pythonは2.*系と3.*系があるが、多くのプログラムはまだ2.*系統で動作します。

Python2.7が最後のメンテナンスリリースが出ていますが、
2.7だとvirtualenvなどでエラーが起きる時があります。

たとえばvirtualenvを必要とするプログラムをインストールするときに起こります。

例:virtualenvでのエラー(Python2.7上でPinax0.7.3をインストールしたときのエラー)
% python scripts/pinax-boot.py ../pinax-env
New python executable in ../pinax-env/bin/python
Traceback (most recent call last):
  File "/home/hogehoge/Pinax-0.7.3-bundle/../pinax-env/lib/python2.7/site.py", line        67, in <module>
    import os
  File "/home/hogehoge/Pinax-0.7.3-bundle/../pinax-env/lib/python2.7/os.py", line 3       98, in <module>
    import UserDict
  File "/home/hogehoge/Pinax-0.7.3-bundle/../pinax-env/lib/python2.7/UserDict.py",        line 83, in <module>
    import _abcoll
  File "/home/hogehoge/Pinax-0.7.3-bundle/../pinax-env/lib/python2.7/_abcoll.py", l       ine 11, in <module>
    from abc import ABCMeta, abstractmethod
  File "/home/hogehoge/Pinax-0.7.3-bundle/../pinax-env/lib/python2.7/abc.py", line        8, in <module>
    from _weakrefset import WeakSet
ImportError: No module named _weakrefset
ERROR: The executable ../pinax-env/bin/python is not functioning
ERROR: It thinks sys.prefix is '/home/hogehoge/Pinax-0.7.3-bundle' (should be '/hom       e/hogehoge/pinax-env')
ERROR: virtualenv is not compatible with this system or executable

2.7系は_weakrefsetをImportしようとしてエラーが出るようです。(2011年1月3日時点)

2.6系の最終版

2.5から書式が変わっている部分がありますので、
少し枯れてきていて、かつまだ新しい部類に入る2.6系をインストールしてみましょう。

2.6.6
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
tar xvzf Python-2.6.6.tgz
cd Python-2.6.6
./configure --enable-shared

Modules/Setupにある。以下の行のコメントを外す。

  • (変更前)

#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

  • (変更後)

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

make
make install

これでインストール完了です。

このあとは共有ライブラリの設定に入ります。



共有ライブラリの設定

このままpython2.6コマンドを打つと、以下のエラーが出ます。

# python2.6
python2.6: error while loading shared libraries: libpython2.6.so.1.0: cannot open shared object file: No such file or directory

libpython2.6.so.1.0が共有ライブラリに登録されていないとお叱りが出ます。


そのファイルがあるか確認してみましょう。


# find / -name "libpython2.6.so.1.0"
/usr/local/src/Python-2.6.6/libpython2.6.so.1.0
/usr/local/lib/libpython2.6.so.1.0

ありますね。



では共有ライブラリに係る次のファイルに「/usr/local/lib」を書き込みましょう。

#vi /etc/ld.so.conf.d/python2.6.conf 

/usr/local/lib

以上です。


さいごに

ldconfig

とライブラリを認識させてみましょう。


その後python2.6と打ってみてください。

# python2.6

Python 2.6.6 (r266:84292, Jan  3 2011, 14:20:44)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

無事実行できますね。

完了です。


追伸

Python2.6は冒頭のPinax0.7.3とも、バッチリ相性がいいです。