プログラミングのニーズごとに12個のPython

ソフトウェア開発にPythonを選択するときは、あらゆる種類のプログラミングニーズをカバーする豊富なパッケージを備えた大規模な言語エコシステムを選択します。ただし、GUI開発から機械学習までのすべてのライブラリに加えて、多数のPythonランタイムから選択することもできます。これらのランタイムの一部は、他のランタイムよりも手元のユースケースに適している場合があります。

これは、標準実装(CPython)から、速度(PyPy)、特別な使用例(Anaconda、ActivePython)、さまざまな言語ランタイム(Jython、IronPython)、さらにはカッティング用に最適化されたバージョンまで、Pythonディストリビューションの簡単なツアーです-エッジ実験(PyCopy、MesaPy)。

CPython

CPythonは、Pythonのリファレンス実装であり、他のすべてのPythonの化身が注目する標準バージョンです。CPythonは、名前が示すようにCで記述されており、Python言語に関するすべてのトップレベルの決定を担当する同じコアグループによって作成されています。

CPythonのユースケース

CPythonはPythonのリファレンス実装であるため、最適化の点で最も保守的です。これは仕様によるものです。Pythonのメンテナは、CPythonが利用可能なPythonの最も広く互換性があり標準化された実装であることを望んでいます。

CPythonは、Python標準への互換性と適合性が、生のパフォーマンスやその他の懸念よりも重要な場合に最適です。CPythonは、Pythonを最も基本的な形で使用したい、特定の便利さを放棄したい専門家にも役立ちます。 

たとえば、CPythonでは、仮想環境をセットアップするためにもう少し持ち上げる必要があります。他のディストリビューション(特にAnaconda)は、ワークスペースのセットアップをさらに自動化します。

CPythonの制限

CPythonには、他のエディションのPythonに見られるパフォーマンスの最適化はありません。ネイティブのJIT(ジャストインタイム)コンパイラ、高速化された数学ライブラリ、およびパフォーマンスのためのサードパーティの追加はありません。これらはすべて自分で追加できるものですが、バンドルされていません。繰り返しになりますが、これはすべて設計によるものであり、最大限の互換性を確保し、CPythonをリファレンス実装として機能させるためですが、パフォーマンスの最適化は開発者次第です。

さらに、CPythonは、Pythonを操作するためのツールのベースラインセットのみを提供します。たとえば、pipパッケージマネージャーは、PythonのネイティブPyPIパッケージリポジトリからパッケージを取得してインストールします。Pipは、開発者から提供された場合、プリコンパイルされたバイナリを(ホイール配布形式を介して)インストールしますが、パッケージがPyPIの外部に持つ可能性のある依存関係はインストールしません。 

関連ビデオ:Pythonがプログラミングを容易にする方法

PythonはITに最適で、システムの自動化から機械学習などの最先端の分野での作業まで、さまざまな種類の作業を簡素化します。

Anaconda Python

Anaconda、Inc。(以前のContinuum Analytics)によって作成されたAnacondaは、商用プロバイダーが支援するディストリビューションと企業向けのサポートプランを必要とするPython開発者向けに設計されています。Anaconda Pythonの主な使用例は、数学、統計、エンジニアリング、データ分析、機械学習、および関連するアプリケーションです。

AnacondaPythonのユースケース

Anacondaは、商用および科学的なPython作業で使用される最も一般的なライブラリの多く(SciPy、NumPy、Numbaなど)をバンドルし、カスタムパッケージ管理システムを介してそれらの多くにアクセスできるようにします。

Anacondaは、これらすべての要素を統合する方法において、他のディストリビューションとは一線を画しています。Anacondaをインストールすると、便利なGUIを介してAnaconda環境のあらゆる側面を利用できるようにするデスクトップアプリ(Anaconda Navigator)が提供されます。コンポーネントを見つけて最新の状態に保ち、それらを操作することは、CPythonよりもAnacondaを使用する方がはるかに簡単です。

もう1つの利点は、特定のパッケージに必要な場合に、AnacondaがPythonエコシステムの外部からコンポーネントを処理する方法です。condaパッケージマネージャは、ハンドルがPythonパッケージおよびサードパーティ、外部のソフトウェア要件の両方をインストールし、アナコンダのために特別に作成されました。

AnacondaPythonの制限

Anacondaには非常に多くの便利なライブラリが含まれており、数回のキーストロークでさらに多くをインストールできるため、AnacondaインストールのサイズはCPythonよりもはるかに大きくなる可能性があります。基本的なCPythonインストールは約100MBで実行されます。Anacondaのインストールは、ギガバイトのサイズに拡大する可能性があります。これは、リソースに制約がある状況で問題になる可能性があります。

Anacondaのフットプリントを削減する1つの方法は、Minicondaをインストールすることです。これは、起動して実行するために必要な最小限のピースのみを含む、Anacondaの簡略版です。次に、各ピースがどれだけのスペースを消費するかを考慮して、適切と思われるパッケージをMinicondaに追加できます。

ActivePython

Anacondaと同様に、ActivePythonは営利企業、この場合はActiveStateによって作成および保守されています。この企業は、多言語のKomodoIDEとともに多数の言語ランタイムを販売しています。

ActivePythonのユースケース

ActivePythonは、エンタープライズユーザーとデータサイエンティスト、つまりPythonを使用したいが、Pythonインストールの組み立てと管理に多くの労力を費やしたくない人々を対象としています。ActivePythonはPythonの通常のpipパッケージマネージャーを使用しますが、検証済みのパックインとして数百の一般的なライブラリと、Intel Math KernelLibraryなどのサードパーティの依存関係を持ついくつかの一般的なライブラリも提供します。

ActivePythonの制限

外部依存関係を持つパッケージを処理するActivePythonのアプローチには1つの潜在的な欠点があります。複雑な依存関係を持つプロジェクトの新しいバージョン(TensorFlowなど)にアップグレードする場合は、ActivePythonインストールもアップグレードする必要があります。開発がプロジェクトの特定のバージョンに結び付けられる傾向がある環境では、これはそれほど問題ではありません。しかし、開発が最先端のバージョンを追跡する傾向がある環境では、問題が発生する可能性があります。

PyPy

CPythonインタープリターのドロップイン代替品であるPyPyは、ジャストインタイム(JIT)コンパイルを使用してPythonプログラムの実行を高速化します。実行するタスクによっては、パフォーマンスが大幅に向上する場合があります。 

PyPyのユースケース

Python全般、特にCPythonに関する一般的な不満は、速度です。デフォルトでは、PythonはCよりも何倍も遅く、時には何百倍も遅くなります。PyPy JIT-Pythonコードを機械語にコンパイルし、平均してCPythonの7.7倍の速度向上を実現します。一部のタスクは50倍も高速に実行されます。 

最良の部分は、これらの利益を解き放つために開発者の側でほとんどまたはまったく努力が必要とされないということです。CPythonをPyPyに交換すれば、ほとんどの場合完了です。

PyPyの制限

PyPyは、常に「純粋な」Pythonアプリケーションで最高のパフォーマンスを発揮します。 PyPyがCPythonのネイティブバイナリインターフェイスをエミュレートした方法のため、NumPyなどのCライブラリとインターフェイスするPythonパッケージもうまくいきませんでした。ただし、時間の経過とともに、PyPyの開発者はこの問題に気を配り、C拡張機能に依存する大多数のPythonパッケージとの互換性を大幅に向上させました。つまり、C拡張機能のサポートはまだ制限されていますが、以前よりはるかに少なくなっています。

PyPyで考えられるもう1つの欠点は、ランタイムのサイズです。標準ライブラリを除くWindowsのコアCPythonランタイムは約4MBですが、PyPyランタイムは約32MBです。PyPyは長い間Pythonの2.xブランチを強調してきたため、たとえば、PyPy for Python 3.xは現在、32ビットのベータテストバージョンでのみWindowsで使用できます。(PyPyは、Python 2.xおよびLinuxおよびMacOSの3.xでは64ビットバージョンで利用できます。)

Jython

JVM(Java仮想マシン)は、Java以外の非常に多くの言語のランタイムとして機能します。長いリストには、Groovy、Scala、Clojure、Kotlin、そしてもちろん、JythonプロジェクトによるPythonが含まれています。

Jythonのユースケース

JythonはPython2.xコードをJVMバイトコードにコンパイルし、結果のプログラムをJVMで実行します。場合によっては、Jythonでコンパイルされたプログラムは、対応するCPythonよりも高速に実行されますが、常に実行されるとは限りません。

Jythonが提供する最大の利点は、Javaエコシステムの他の部分との直接の相互運用性です。JavaはPythonよりもさらに広く使用されています。JVMでPythonを実行すると、Python開発者は、他の方法では使用できないライブラリとフレームワークの巨大なエコシステムを利用できます。同様に、JythonはJava開発者がPythonライブラリを使用できるようにします。 

Jythonの制限

Jythonの最大の欠点は、Pythonの2.xブランチのみをサポートすることです。Python 3.xのサポートは開発中ですが、しばらくの間開発されています。これまでのところ、何もリリースされていません。

JythonはPythonをJVMにもたらしますが、PythonをAndroidにもたらしないことにも注意してください。現在、JythonからAndroidへの適切なポートがないため、Jythonを使用してAndroidアプリケーションを開発することはできません。

IronPython

JythonがJVMでのPythonの実装であるように、IronPythonは.NetランタイムまたはCLR(共通言語ランタイム)でのPythonの実装です。IronPythonは、CLRのDLR(動的言語ランタイム)を使用して、PythonプログラムをCPythonと同じ程度のダイナミズムで実行できるようにします。

IronPythonのユースケース

Jythonのように、IronPythonはブリッジです。大きなユースケースは、Pythonと.Netユニバース間の相互運用性です。既存の.Netアセンブリは、Pythonのネイティブインポートおよびオブジェクト操作構文を使用してIronPythonプログラムにロードできます。IronPythonコードをアセンブリにコンパイルしてそのまま実行したり、他の言語から呼び出したりすることもできます。ただし、アセンブリ内のMSIL(Microsoft Intermediate Language)は、共通言語仕様に準拠していないため、他の.Net言語から直接アクセスできないことに注意してください。

IronPythonの制限

Jythonと同様に、IronPythonは現在Python2.xのみをサポートしています。ただし、IronPython3.x実装を作成するための作業が進行中です。

WinPython

名前が示すように、WinPythonはMicrosoftWindowsのユーザー向けに特別に作成されたPythonディストリビューションです。CPythonの以前のバージョンのWindowsは適切に設計されておらず、WindowsユーザーがPythonエコシステムを最大限に活用することは困難でした。CPythonのWindowsエディションは時間の経過とともに改善されましたが、WinPythonはCPythonにはない多くの機能を提供します。

WinPythonのユースケース

WinPythonの主な魅力は、Pythonの自己完結型エディションであることです。実行するマシンにインストールする必要はありません。ディレクトリに解凍する必要があります。これにより、WinPythonは、特定のシステムにソフトウェアをインストールできない場合、事前構成されたPythonランタイムをアプリケーションと一緒に配布して実行する必要がある場合、またはPythonの複数のエディションを並べて実行する必要がある場合に役立ちます。互いに干渉することなく。

WinPythonには、NumPy、Pandas、SciPy、Matplotlibなどのデータサイエンス指向のパッケージも多数バンドルされているため、追加のインストール手順なしですぐに使用できます。多くのWindowsマシンにはC / C ++コンパイラが含まれておらず、多くのPython拡張機能がそれを必要とするか、使用できるため、C / C ++コンパイラも含まれています。

WinPythonの制限

WinPythonの制限の1つは、一部のユースケースではデフォルトで含まれすぎる可能性があることです。これを改善するために、WinPythonの作成者は、製品の最小限のインストールのみを含む、各WinPythonエディションの「ゼロ」バージョンを提供します。Python独自のpipツールまたはWinPythonのWPPMユーティリティを使用して、後でパッケージを追加できます。

Pythonポータブル

Python Portableは、自己完結型パッケージのCPythonランタイムです。これは、同様に自己完結型のアプリケーションのPortableDevAppsコレクションの好意によるものです。

PythonPortableのユースケース

WinPythonと同様に、Python Portableには、Matplotlib、Numba、SymPy、SciPy、Cythonなどの科学計算用の多数のパッケージが含まれています。また、WinPythonと同様に、PythonPortableはWindowsホストに正式にインストールしなくても実行できます。任意のディレクトリまたはリムーバブルドライブに配置できます。Spyder IDEとPythonのpipパッケージマネージャーも含まれているため、必要に応じてパッケージを追加、変更、または削除できます。

PythonPortableの制限

WinPythonとは異なり、PythonPortableにはC / C ++コンパイラが含まれていません。Cythonで記述された(したがってCにコンパイルされた)コードを利用するには、Cコンパイラーを提供する必要があります。

実験的なPythonディストリビューション

これらのディストリビューションは、Pythonに大幅な変更を加えます。これは、まったく新しいものの開始点としてPythonを使用しているため、または標準のPythonに戦略的な変更を加えているためです。概して、これらのPythonはまだ本番環境での使用は推奨されていません。 

近い将来、Python 2.xコードベースを使用している場合は、Python2.xを存続させる実験的なPythonディストリビューションに関する記事を確認することをお勧めします。

MicroPython

MicroPythonは、マイクロコントローラーなどの非常にローエンドのハードウェアで実行できるPython言語の最小限のサブセットを提供します。MicroPythonはPython3.4を実装していますが、いくつかの違いがあります。Pythonを知っていれば、MicroPythonコードを書くのは簡単ですが、既存のコードがそのまま実行されない場合があります。

パイコピー