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ソース・コードに簡単に変換できます。