GraalVM Pythonランタイム
GraalPyは、Python 3.10準拠のランタイムを提供します。主な目標は、PyTorch、SciPy、およびそれらを構成するライブラリをサポートすることと、充実したPythonエコシステムの他のデータ・サイエンスおよび機械学習ライブラリと連携することです。GraalPyは通常、純粋なPythonコードをCPythonより高速に実行でき、C拡張が関係する場合はCPythonのパフォーマンスにほぼ匹敵します。多くのワークロードは正常に実行されますが、外部パッケージを使用するPythonプログラムでは、サポートされていない問題が発生する可能性があります。現時点では、Pythonの実装は、試験的使用や関心があるエンドユーザーによる使用が可能です。この実装に関するよくある質問については、FAQを参照してください。
GraalPyのインストール
LinuxおよびmacOS
LinuxおよびmacOSプラットフォームにGraalPyをインストールする最も簡単な方法は、Pythonバージョン・マネージャーであるpyenvを使用することです。たとえば、バージョン22.3.0をインストールするには、次のコマンドを実行します:
pyenv install graalpy-22.3.0
pyenv shell graalpy-22.3.0
もう1つのオプションは、Conda-Forgeを使用することです。最新バージョンのGraalPyの環境を取得するには、次のコマンドを使用します:
conda create -c conda-forge -n graalpy graalpy
または、プラットフォームに適した圧縮GraalPyインストール・ファイルをダウンロードします。たとえば、Linuxの場合は、graalpy-XX.Y.Z-linux-amd64.tar.gzのパターンに一致するファイルをダウンロードします。ファイルを解凍し、必要に応じてPATH変数を更新します。macOS Catalina以降を使用している場合は、隔離属性を削除する必要があります。これを行うには、次のコマンドを実行します。
sudo xattr -r -d com.apple.quarantine /path/to/GRAALPY_HOME
Java埋込みのサポートおよび他の言語との相互運用性を含む完全なGraalVMでGraalPyを試すには、www.graalvm.orgのバンドル・リリースを使用できます。
Windows
現在、Windows用のインストーラはありません。かわりに、これらの手順に従ってソースからGraalPyをビルドします。
Pythonの実行
GraalPyの最適な使用方法は、venv
仮想環境から使用することです。これにより、ラッパー・スクリプトが生成され、標準のPythonインタプリタとしてシェルから実装を使用できるようになります。GraalPyを使用してvenv
仮想環境を作成するには、プロジェクト・ディレクトリで次のコマンドを実行します:
graalpy -m venv <venv-dir>
シェル・セッションで環境をアクティブ化するには、次を実行します:
source <venv-dir>/bin/activate
仮想環境では、python
、python3
、graalpy
などの複数の実行可能ファイルを使用できます。
graalpy
ランチャを使用して、単純なPythonコマンドまたはプログラムを実行できます:
graalpy [options] [-c cmd | filename]
たとえば、コマンドgraalpy
を使用してコマンドラインからPython対話型シェルを起動し、Pythonシェル・プロンプト(>>>
で識別)で次の行を入力し、続いてCRを入力します。
>>> print("Hello World!")
出力が直接表示され、その後にPython対話型シェル・プロンプトが表示されます
Hello World!
>>>
または、Pythonスクリプトを起動できます。次の内容をhelloworld.pyという名前のファイルにコピーします:
print("Hello World!")
graalpy
を起動し、ファイル名を引数として渡します:
graalpy helloworld.py
次の出力が表示されます
Hello World!
Pythonオプション
GraalPyでは、Python 3.10と同じオプションの一部に加えて、基礎となるPythonランタイム、GraalVMのツールおよび実行エンジンを制御するための追加オプションがサポートされています。これらは、次のコマンドを使用して表示できます:
graalpy --help --help:tools --help:languages
ネイティブ・イメージおよびJVMランタイム
デフォルトでは、GraalVMは、ネイティブ・イメージを使用して事前にコンパイルされたバイナリからGraalPyを実行するため、起動時間が短縮され、フットプリントが小さくなります。事前にコンパイルされたバイナリにはPythonおよびLLVMインタプリタが含まれていますが、他の言語と相互運用するには、--jvm
オプションを指定する必要があります。これにより、ランチャは、ネイティブ・イメージモードではなくJVMで実行するように指示されます。したがって、起動時間が長くなります。