このBlogは移転しました。今後は aish.dev を御覧ください。

Pythonバージョンの選びかた

Pythonはおよそ18ヶ月ごとに新しいメジャーバージョンをリリースする慣習になっていて、これまでにたくさんのバージョンがリリースされ、広く利用されてきた。Pythonの開発では後方互換性を保つことが非常に重視されていて、通常のアプリケーションであれば、Pythonのアップデートで動かなくなってしまうことはあまりない。アプリケーションが今後廃止される予定になっている機能を利用していると、DeprecationWarningという警告が出力されてしまう程度だ。

DeprecationWarningが出るようになってから実際に廃止されるまで少なくとも数年間はあるので、普通はその間にのんびり対処する事ができる。また、いったん廃止予定と決定されても、その機能が一部で使い続けられている場合には実際には削除されない、というケースも非常に多い。Pythonのドキュメントを見てみると、もう10年も前から廃止予定となってはいるが、未だに堂々と生き残っている機能がたくさんある。

新規にアプリケーションを開発するときには、どのバージョンをターゲットとして開発すればよいのだろうか?現時点で考慮する必要のあるPythonのメジャーバージョンは、2.4, 2.5, 2.6, 2.7, 3.2 の5つだろう。

Python3.xは互換性を犠牲にして Python 2.xの問題点を解決したバージョンであり、現実的には2.xと3.xのどちらかを選択することになる。3.xと2.x両方で動作するように開発することができないわけではないが、個人や企業内で使う、普通のアプリケーションではちょっと荷が重い。

プログラミング初心者には

初めてのプログラミング言語としてPythonを学ぶのであれば、Python 3.2が良いのではないかと思う。Python3はPython2を強化し、ゴミを取り除いたバージョンである。すなわち、

Python3 = Python2 + 新機能 - Python2のゴミ  --- (1)

となる。初心者がわざわざPython2のゴミ部分を学ぶ必要はない。ある程度学習が進んだとき、もしPython2が必要になったら、その時点でPython2を学んでもさほど遠回りにはならないだろう。上記の式から、

Python2 = Python3 - 新機能 +  Python2のゴミ --- (2)

であり、新しく学習しなければならないのは「Python2のゴミ」部分だけですむからだ。こういうごちゃごちゃした部分の学習は後回しにした方が効率が良いだろうし、学ばなければいけない「ゴミ」の量も減らすことができるだろう。

アプリケーション開発者には

できればPython3の採用を積極的に推し進めたいところだが、対応ライブラリが少なく、各Linuxディストリビューション等での採用もさほど進んでいない状況を考えると、Python2を使わざるを得ないケースが多い。特にDjangoやTwisted, 各種RDB接続モジュールなどの主要なサードパーティ製ライブラリの対応が完了するまでは、Python3を片目で睨みつつ、できるだけPython2.7にアップデートして新しい ioモジュールや文字列フォーマットなどのPython3互換な機能を使っておくようにしよう。

確かにPython2.7にはあまり未来はないのだが、そんなに過剰に恐れる必要はない。通常、Pythonのメジャーリリースは2年間しかマイナーバージョンアップされないが、2.7についてはもっと長い期間マイナーバージョンアップをリリースすることが決まっている。また、マイナーバージョンアップとしてリリースされなくなってからも、そのソースコードはもっと長い期間保守され続けるだろう。Linuxディストリビュータなどは、何年もこのソースコードを元に独自のビルドをパッケージとして提供するはずだ。新機能の追加は望めないものの、Python2には未だに膨大なユーザがおり、数年以内に見捨てられてしまうとは思えない。

具体的にはどのバージョン?

Python3を使うなら、3.2だ。3.0/3.1をサポートする理由は全く思いつかない。

Python2では、好きにPythonのバージョンを選べるなら最新のPython2.7を使うべきだ。しかし、業務用の環境ではできるだけ野良ビルドPythonをインストールしたくない、と言うケースも多いだろう。できるだけ多くの環境をサポートしたいのであれば、ちょっと考える必要がある。

OS Pythonの最新メジャーバージョン
Red Hat Enterprise Linux 5 2.4
Red Hat Enterprise Linux 6 2.6
Fedora 14 2.7/3.1
CentOS 5 2.4
Debian 5("lenny") 2.5
Debian 6("squeeze) 2.6
Ubuntu 8.04 2.5
Ubuntu 10.10 2.6
Mac OS X 10.5 2.5
Mac OS X 10.6 2.6
Google App Engine 2.5
Windows -

パッケージシステムのないWindows専用なら、どっちにしろユーザがいちいちインストールする必要があるので、別にどのバージョンでも良い。が、それ以外のプラットフォームを対象にするなら、できるだけプリインストールされているか、パッケージングシステムでサポートされているバージョンが良いだろう。人気のGoogle App Engine は 2.5 専用だし、サーバ用として広く使われていそうなRHEL5/CentOS 5 はなんと2.4ベースだ。

現状では、Python2.7をインストール可能なら2.7、Google App Engineで使うなら2.5、コードを公開してPyPIに登録したいという場合は2.4、どれでもなければプリインストールされたバージョンをターゲットにする、というのが無難な選択であろう。