インタプリタの選択¶
Pythonの状態(3&2)¶
Pythonインタプリタを選択するときには、”Python 2 または Python 3 のどちらを選択する必要がありますか?” という漠然とした質問がありますが、どちらにするかは少々微妙なところです。
状態の基本的な要点は次のとおりです。
- 今日の実稼働アプリケーションの多くは、Python 2.7 を使用しています。
- Python 3は、現時点でアプリケーションの実環境への展開の準備が整っています。
- Python 2.7は、2020年まで必要なセキュリティアップデートのみを受け取ります [6]。
- “Python” というブランドは、Python 3 と Python 2 の両方をカプセル化します。
推奨事項¶
率直に言うと:
- 新しい Python アプリケーションは Python 3 を使用します。
- Python を初めて学ぶなら、Python 2.7 を身近に感じていると思いますが、Python 3 を学ぶことよりも有用ではありません。
- 両方を学ぶ。 どちらも “Python” です。
- 既に構築されているソフトウェアは Python 2.7 に依存していることが多いです。
- 新しいオープンソースの Python ライブラリを作成している場合は、Python 2 と Python 3 の両方を同時に作成することをお勧めします。 新しいライブラリのために Python 3 を広くサポートしたいのは政治的なものであり、多くのユーザを疎外させますが、これは問題ではありません。今後3年間で、少しずつ移り変わることでしょう。
そんなわけで.... 3?¶
使用する Python インタプリタを選択する場合は、最新バージョンの Python 3.x を使用することをお勧めします。これは、すべてのバージョンで新しく改良された標準ライブラリモジュール、セキュリティ、バグ修正がもたらされるからです。
このように、既存のコードベース、Python 2 専用ライブラリ、シンプルさ/馴染みやすさなどの理由がある場合、Python 2 に愛着があり インスピレーションを感じている場合は、Python 2 を使用してもかまいません。 それは害ではありません。
Can I Use Python 3? を実行して、依存しているソフトウェアが Python 3 を採用できるかどうかを確認します。
Python 2.6, 2.7, Python 3 書くことは可能です。 これは、あなたが書いているソフトウェアの種類に応じて、些細なものから難しいものまでさまざまです。 あなたが初心者なら、もっと重要なことが心配されます。
実装¶
人々が Python について話すとき、言語だけ意味するのではなく、CPython の実装も意味することがよくあります。 Python は実際にはさまざまな方法で実装できる言語の仕様です。
CPython¶
CPython は、Cで書かれた Python のリファレンス実装です。Python コードを中間バイトコードにコンパイルし、それを仮想マシンで解釈します。 CPython は、Python パッケージとC拡張モジュールとの最高レベルの互換性を提供します。
オープンソースの Python コードを作成していて、できるだけ広い範囲のユーザーにアプローチしたい場合は、CPython をターゲットにするのが最適です。 Cエクステンションに依存するパッケージを使用するには、CPython が唯一の実装オプションです。
CPython はリファレンス実装であるため、Python 言語のすべてのバージョンはC言語で実装されています。
PyPy¶
PyPy は Python 言語の制限付き静的型サブセットで実装された Python インタプリタです。これは RPython と呼ばれます。 インタプリタにはジャストインタイムコンパイラがあり、複数のバックエンド(C、CLI、JVM)をサポートしています。
PyPyは、パフォーマンスを向上させながら、リファレンス CPython 実装との最大の互換性を目指しています。
Python コードのパフォーマンスを向上させたい場合は、PyPy を試してみる価値があります。 一連のベンチマークでは、現在、CPythonより 5倍以上高速 です。
PyPy は Python 2.7 をサポートします。 ベータ版でリリースされた PyPy3 [1] は、Python 3 をターゲットにしています。
Jython¶
Jython は、Python コードを Java バイトコードにコンパイルし、JVM(Java仮想マシン)によって実行される Python の実装です。さらに、Python モジュールのような Java クラスをインポートして使用することができます。
既存の Java コードベースとのインタフェースが必要な場合や、JVM 用の Python コードを書く必要があるなどの理由がある場合は、Jython が最適です。
Jython は現在 Python 2.7 をサポートしています。 [2]
IronPython¶
IronPython は、.NETフレームワーク用の Python の実装です。これは、Python と .NETフレームワークライブラリの両方を使用することができますし、Python コードを .NETフレームワークの他の言語にも公開することができます。
Python Tools for Visual Studio はIronPythonをVisual Studio開発環境に直接統合し、Windows開発者にとって理想的な選択肢にします。
IronPython は Python 2.7 をサポートしています。 [3]
PythonNet¶
Python for .NET は、ネイティブにインストールされた Python インストールを .NET Common Language Runtime(CLR)にシームレスに統合するパッケージです。 これは IronPython(上記を参照)とは逆のアプローチであり、これは競合するというよりも補完的です。
Pythonnet は、Mono と組み合わせて、OS X や Linux などの Windows 以外のオペレーティングシステム上のネイティブ Python インストールを .NETフレームワーク内で動作させることができます。IronPython に加えて競合することなく実行できます。
Pythonnet は、Python 2.6 から Python 3.5 までをサポートします。 [4] [5]
[1] | http://pypy.org/compat.html |
[2] | https://hg.python.org/jython/file/412a8f9445f7/NEWS |
[3] | http://ironpython.codeplex.com/releases/view/81726 |
[4] | https://travis-ci.org/pythonnet/pythonnet |
[5] | https://ci.appveyor.com/project/TonyRoberts/pythonnet-480xs |
[6] | https://www.python.org/dev/peps/pep-0373/#id2 |