インタプリタの選択

Pythonの状態(3&2)

Pythonインタプリタを選択するときには、”Python 2 または Python 3 のどちらを選択する必要がありますか?” という漠然とした質問がありますが、どちらにするかは少々微妙なところです。

状態の基本的な要点は次のとおりです。

  1. 今日の実稼働アプリケーションの多くは、Python 2.7 を使用しています。
  2. Python 3は、現時点でアプリケーションの実環境への展開の準備が整っています。
  3. Python 2.7は、2020年まで必要なセキュリティアップデートのみを受け取ります [6]
  4. “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