2012年9月追記
記事執筆当時から比べると,主に著名なパッケージやモジュールのPython 3対応が進んできており,そろそろPython 3への移行を考えてもよい頃かもしれませんね:-)。
ちょっと宣伝。Pythonの最新版に対応した入門書「みんなのPython 第三版」,発売中です:-)。
2008年のリリース当時,Python 3.0は完全に普及するまで数年かかるだろうと言われていて,僕も実際に仕事で3.x系をバリバリ使うようになるのは何年か先になるだろうと思っている。
最も大きな理由。それはCで書かれたエクステンションの3.0対応がけっこう大変だから。
エクステンション開発者を悩ませるのは,組み込み型の変更だろう。このへんに書かれていることを読むと分かるけど,3.0では文字列型,数値型のC構造体の名前が変わってしまうのだ。Cのソースコードでは,構造体を利用している部分を全部見て,書き換える必要がある。実際に2.x -> 3.0移行を試した人によると,「むちゃくちゃ大変というわけではなかった,一週間でできた」とのことだ。まあそれくらいの時間がかかるということだ。
データベース接続モジュール,テンプレートエンジンとか,お世話になっているCエクステンションは多い。直接使って無くても,フレームワークがそういうエクステンションを使っていることが多い。その他にも,PILのようなライブラリ,wxPythonのようなGUIフレームワークラッパは修正点が多くて大変だと思う。これらのエクステンションの多くが3.0に対応してくれないと,僕は完全に3.0には移行できない。それまで数年かかるだろう,ということだ。
Djangoのチームは,まず2.6に移行して,その後3.xへの移行を進める,という計画らしい。Pythonの標準ライブラリだけで事足りるようなコードしか書かない人とかお花畑の住人は別だが,一般のPythonistaはDjangoのチームにならってまず2.6に移行するべきだ。
今からPythonを始める初心者に3.0を勧める人がいるとすれば,そいつはもしかしたらPythonの普及を阻む悪魔かもしれない。なぜならPython 3.0を勧めることは,Pythonを囲む膨大なライブラリやエクステンションのようなリソースを活用する道を,数年閉ざすことになるからだ。まずは2.6か2.5(いくつかのメジャーなフレームワークは現時点では2.6に未対応),そして恐らくリリースされる2.7を使って,できるだけ3.0のスタイルを意識してコードを書くようにするのが今のところ推奨されるPython入門の手順だと言える。
もっとも,Pythonが手になじんでいる人や,余裕のある人が3.0を使うのは全然悪いことではないと思うけどね。