TEXT/YUBASCRIPT

Web開発とか生物学とかTwitterとかの話題を適当に書いてる

Python2 と Python3 の共存

Python3がなかなかいい感じなので使ってみることにした。

どう違うのかは一言で説明するのが難しいのだが、よりスクリプト言語としての「純度」が増したように思う。

たとえばint型とlong型が統合された点。 もともとユーザー側としてはintもlongも整数であり、これを分けるのはメモリ使用量という機械側の都合だったわけだが、「どーせメモリなんて山ほどあるんだからじゃんじゃん使っちまえ」というブルジョワ的発想でlong型に統合する運びになったらしい。

同様にstr型とunicode型も統合された。BossKitter V5 は Python2 で書いたのだが、この違いに結構苦しめられたのでこれは有り難い変更だ。

ただ、そういうバッポン的改変のせいで、同じPythonを名乗ってるくせに後方互換性がない。 というわけで Python2 をデフォルトにしたままで Python3 もインストールする、という方向にしようと思う。

前提条件

  • OS: Ubuntu 12.04 (python2.7 が最初から入ってる)
  • コマンドで python と入力すると python2.7 が、 python3 と入力すると python3.2 が起動する
  • コマンドで pip と入力すると python2.7 の、 pip3 と入力すると python3.2 のパッケージを入手できる

python3 のインストール

とりあえず python3 は apt-get で入手。

$ sudo apt-get install python3

これで python3 と入力すると python3 が起動する。

pip3 のインストール

まず distribute をここ からダウンロード・解凍し、中に入ってる setup.py を python3 で実行。

$ tar xzvf distribute-0.6.49.tar.gz
$ cd distribute-0.6.49
$ sudo python3 setup.py install
(...)
Installed /usr/local/lib/python3.2/dist-packages/distribute-0.6.49-py3.2.egg
Processing dependencies for distribute==0.6.49
Finished processing dependencies for distribute==0.6.49
After install bootstrap.
Creating /usr/local/lib/python3.2/dist-packages/setuptools-0.6c11-py3.2.egg-info
Creating /usr/local/lib/python3.2/dist-packages/setuptools.pth

これで /usr/local/lib/python3.2/dist-packages/distribute-0.6.49-py3.2.egg に easy-install.py が入るので、ここに移動して pip をインストール。

$ cd /usr/local/lib/python3.2/dist-packages/distribute-0.6.49-py3.2.egg
$ sudo python3 easy_install.py pip
(...)
Installing pip script to /usr/local/bin
Installing pip3.2 script to /usr/local/bin
Installing pip3 script to /usr/local/bin

これで pip3 がインストールされたが、 pip も上書きされてしまったので、このままでは pip と入力すると python3 のパッケージになってしまう。 そこで easy_install-2.7 で pip をインストールし直す。

$ sudo easy_install-2.7 pip

これで pip なら python2, pip3 なら python3 という使い分けが可能になる。

Python3 についてはこれを読めば大体わかると思う