Pythonスタンドアロン・アプリケーション

GraalPyを使用すると、Pythonアプリケーションまたはライブラリを、外部依存関係のないネイティブ・アプリケーションまたはJARファイルとして作成できます。GraalPyがビルドされるTruffleフレームワークは、GraalPyがPythonのネイティブ拡張の管理実行に利用するSulong LLVMランタイムと組み合せることで、標準ライブラリおよびインストール済パッケージへのアクセスを含むすべてのファイルシステム・アクセスを完全に仮想化します。

GraalPyには、Linux、macOSおよびWindows用のPythonバイナリを作成するためのstandaloneという名前のモジュールが含まれています。モジュールは、アプリケーションのすべてのリソースを1つのファイルにバンドルします。

前提条件: バージョン23.1.0以降のGraalPyディストリビューション。GraalPyのリリースを参照してください。

たとえば、my_script.pyという名前のPythonファイルとmy_venvという名前の仮想環境にインストールしたパッケージからネイティブ実行可能ファイルを生成する場合は、次のコマンドを実行します:

graalpy -m standalone native \
      --module my_script.py \
      --output my_binary \
      --venv my_env

ネイティブのmy_binaryファイルが生成され、Pythonコード、GraalPyランタイム、およびPython標準ライブラリが1つの自己完結型の実行可能ファイルに含まれています。その他のオプションについては、graalpy -m standalone native --helpを使用してください。

セキュリティに関する考慮事項

Pythonコードを含むネイティブ実行可能ファイルまたはJARファイルの作成は、軽度の難読化と見ることもできますが、ソース・コードは保護されません。Pythonソース・コードは実行可能ファイルにそのまま格納されません(GraalPyバイトコードのみが格納されます)が、バイトコードはPythonソース・コードに簡単に変換できます。