インタプリタを選ぶ

どっちのPythonを使いますか?

2.x vs 3.x

tl;dr: Python 2.xは現在のプロジェクトだとこちらで、新しいプロジェクトだとPython 3.xを選びます。

参考文献

今日

使用するPythonインタプリタを選択するときに、 特別な理由がない場合はPython 2.7.xを使うことを 強く 推奨しています。

将来

より多くのモジュールがPython3に移行したなら、 そのモジュールを使っている他のものも移行するのが簡単になるでしょう。

どのPythonをサポートすべきでしょう?

新しいPythonのモジュールで作業を始めるなら、 Python 2.5や2.6などのPython3の機能をサポートしているバージョンで書くことを勧めます。

実装

異なるバックエンド上で、Pythonプログラミング言語の人気のある実装がいくつかあります。

CPython

CPythonはC言語で書かれているPythonの実装のことを指しています。 Pythonのコードを即座にバイトコードにコンパイルして、仮想マシンに解釈させます。 人々がPythonと話すときは、言語だけを指しているのではなくて、この実装のことも指しています。 PythonのパッケージとC拡張モジュールとの互換性を最大限持っています。

オープンソースやたくさんの人に使ってもらいと思っているPythonコードを書いているなら、 CPythonをターゲットにするとベストです。 C拡張モジュールに依存する(例: numpy)パッケージを使う必要がある場合は、CPythonしか選択肢はありません。

リファレンス実装であるPython言語の全てのバージョンは、CPythonとして利用することができます。 Python 3は、CPythonの実装でのみ使うことができます。

PyPy

PyPy は、RPythonと呼ばれているPython言語の制限された静的型付けされたサブセットとして実装されているPythonインタプリタです。 インタプリタはジャストインタイムコンパイラの機能を持っていたり、複数のバックエンド(C、CLI、JVM)をサポートしています。

PyPyは、パフォーマンスの改善する際にCPythonの実装を参照して互換性を最大限持たせることを目的としています。

Pythonのコードを、より高いパフォーマンスを得ることができるものを探しているなら、PyPyを試してみる価値があります。ベンチマークの結果では、現在CPythonよりも5倍早いです。

現在PyPyはPython 2.7をサポートしています。 [1]

Jython

Jython は、PythonコードをJVM上で実行する際にJavaのバイトコードにコンパイルするPythonの実装です。 Pythonモジュールと同じようにJavaクラスをインポートして使うことができるのでさらに便利です。

既存のJavaコードがあって、そのためのインターフェースが必要であるか、 JVM用にPythonのコードを書く他の理由がある場合、Jythonはベストな選択だと思います。

現在Jythonは、Python 2.5をサポートしています。 [2]

IronPython

IronPython は、.NET framework用のPythonの実装です。 Pythonと.NET frameworkのライブラリを使うことができ、Pythonを他の.NET言語に提供することも可能です。

Python Tools for Visual Studio は、 Visual Studio開発環境に直接IronPythonを統合していて、Windows開発者が選択することができます。

IronPythonは、Python 2.7をサポートしています。 [3]

[1]http://pypy.org/compat.html
[2]http://wiki.python.org/jython/JythonFaq/GeneralInfo#Is_Jython_the_same_language_as_Python.3F
[3]http://ironpython.codeplex.com/releases/view/81726