読者です 読者をやめる 読者になる 読者になる

cloverrose's blog

Python, Machine learning, Emacs, CI/CD, Webアプリなど

PythonzでPython2.7.3をインストール 謎のテクノロジー

いろいろなOSでPythonzを使ってPython2.7.3を入れたときのメモ。
Pythonのコンパイルに必要なライブラリがOSによって違う。それ以降はどのOSでも基本的に同じ。

Pythonzを使うメリット

1. どのOSでも同じディレクトリ構造、PATHの通し方でOK
2. Pythonzを使ってるユーザーで共通の設定になりやすい
3. easy_install, pipも新しくインストールしたPythonごとにインストールされる
4. ユーザーホーム直下のディレクトリで完結するので他のユーザー環境を汚さない

ビルドに必要になるものをインストール

この作業を忘れると、ビルドされたPythonでImportErrorが発生してしまう。
自分はzlibでエラー発生したので、一旦.pythonz/pythons/CPython-2.7.3を削除して再インストールした。

CentOS6.2の場合

注:CentOS 6.2の標準のPythonはPython2.6.6

How to install Python 2.7.3 on CentOS 6.2 | Too Much DataのInstall development toolsと同じ。

$ sudo yum check-update
$ sudo yum update
$ sudo yum groupinstall "Development tools"
$ sudo yum install zlib-devel
$ sudo yum install bzip2-devel
$ sudo yum install openssl-devel
$ sudo yum install ncurses-devel

Ubuntuの場合

追記
2012/10/24
必要なライブラリのインストール
PythonzのインストールとPATHの設定
Python2.7.3のインストールとPATHの設定,utf-8に設定
easy_install, pip, ipythonのインストール
を一括して行うスクリプトを作成 Ubuntuをインストールしたらすること:ダウンロード・展開・cd・source UbuntuStandardSetup.sh — Gist

pybrewが終了のお知らせらしいのでPythonzを入れてみた - DT戦記(zonu_exeの日記)を参考に

sudo apt-get install build-essential python-dev curl
sudo apt-get install libncurses-dev libreadline6-dev libbz2-dev liblzma-dev libsqlite3-dev libgbm-dev

追記
2012/10/24
libncurses-dev libreadline6-devを入れないと矢印が制御文字入力として解釈されてしまう

libsqlite3-dev libsqlite3-0を入れないとIPythonで履歴が保存されない

Pythonzのインストール

必要なスクリプトをダウンロードして実行

$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash

実行後の指示に従い.bashrcに以下を追加しコンソールを再起動

# pythonz
[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc

PythonzでPython2.7.3をインストール

$ pythonz install 2.7.3

PythonzでインストールしたPython2.7.3にパスを通すため.bashrcに以下を追記してコンソールを再起動

export PATH=$HOME/.pythonz/pythons/CPython-2.7.3/bin:$PATH

デフォルトエンコーディングをUTF-8

参考:http://cloverrose.hateblo.jp/entry/2012/05/10/015617
.pythonz/pythons/CPython-2.7.3/lib/python2.7/sitecustomize.pyを新規作成した以下を追加

import sys
sys.setdefaultencoding("utf-8")

easy_install, pipのインストール

最初疑問だったのが、Pythonzでインストールされたpython環境の下にうまくインストールできるかということ。
つまり、システム標準のeasy_install, pipと同じところにインストールしようとしてしまうのではないかということ。
しかし、そんな心配は何のその、謎のテクノロジーによりスクリプトを呼び出したときのPythonの環境の下に綺麗にインストールしてくれた。

$ wget  http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py

$ wget  http://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

get-pip.pyのダウンロードで次のようなエラーがMacででる

エラー: `raw.github.com' の証明書は信用されません。
エラー: `raw.github.com' の証明書の発行者が不明です。

wget --no-check-certificate サーバ証明書を検証しない

で解決

http://python-distribute.org/distribute_setup.py

https://raw.github.com/pypa/pip/master/contrib/get-pip.py

IPythonのインストール

BPythonもあるけど複数行履歴がないのでIPython派

pip install ipython

IPythonを快適に使うにはreadlineが必要。
libreadline6-devをインストールしてないと、IPython起動時にその旨が表示される。
pip installではなくeasy_installを使うようにと注意書きもあるので素直に

easy_install readline

複数行の履歴でインデントが綺麗になれば文句ないんだけどなー