Python パッケージの生成と Python アプリケーションのビルド
サポートされるプラットフォーム: Windows®、Linux®、Mac
この例では、MATLAB® 関数から Python® パッケージを作成し、そのパッケージを MATLAB Compiler SDK™ で生成された Python アプリケーションに統合する方法を説明します。
前提条件
Python パッケージを生成するため、および Python アプリケーションを実行するためのシステム要件を満たしていることを確認します。詳細については、MATLAB Compiler SDK の Python のターゲットの要件を参照してください。
アプリケーションの実行には、エンド ユーザーによる MATLAB Runtime のインストールが必要です。詳細については、MATLAB Runtime のダウンロードとインストールを参照してください。
テスト目的で、MATLAB Runtime の代わりに MATLAB のインストールを使用することができます。
MATLAB での関数の作成
MATLAB で、Python アプリケーションで使用する MATLAB コードを調べます。この例では、以下のコードを含む、makesqr.m という名前の関数を作成します。
function y = makesqr(x)
y = magic(x);MATLAB コマンド プロンプトで、makesqr(5) と入力します。
出力は 5 行 5 列の行列になります。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9compiler.build.pythonPackage を使用した Python パッケージの作成
プログラムによる方法を使用して Python パッケージをビルドします。あるいは、グラフィカル インターフェイスを使用して Python パッケージを作成する場合は、Create Python Package Using Python Package Compiler Appを参照してください。
関数を呼び出す MATLAB サンプル スクリプトを作成します。以下のコードを
makesqrSample1.mという名前のサンプル ファイルに保存します。% Sample script to demonstrate execution of function y = makesqr(x) x = 5; y = makesqr(x);パッケージ化の際、MATLAB Compiler SDK はサンプル MATLAB スクリプトを使用して、ターゲット言語でサンプル アプリケーションを生成します。詳細については、Create Sample Code to Call Exported Functionを参照してください。
compiler.build.pythonPackage関数と先ほど作成したmakesqr.mファイルを使用して Python パッケージをビルドします。名前と値の引数を使用してパッケージ名を指定し、サンプル ファイルを追加します。compiler.buildコマンドで名前と値の引数を使用して、追加オプションを指定できます。詳細については、compiler.build.pythonPackageを参照してください。buildResults = compiler.build.pythonPackage('makesqr.m', ... 'PackageName','MagicSquarePkg', ... 'SampleGenerationFiles','makesqrSample1.m', ... 'Verbose','on');
compiler.build.ResultsオブジェクトbuildResultsには、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報が含まれています。この関数により、現在の作業ディレクトリにある
MagicSquarePkgpythonPackageという名前のフォルダーに以下のファイルが生成されます。samples\makesqrSample1.py— Python サンプル アプリケーション ファイル。MagicSquarePkg\__init__.py— パッケージのインポートを容易にする Python 初期化コード。MagicSquarePkg\MagicSquarePkg.ctf— Python パッケージが含まれるデプロイ可能なアーカイブ。GettingStarted.html— パッケージの統合に関する情報が含まれる HTML ファイル。includedSupportPackages.txt— パッケージに含まれるすべてのサポート ファイルをリストしたテキスト ファイル。mccExcludedFiles.log— アプリケーションに含まれていないすべてのツールボックス関数のリストが含まれるログ ファイル。サポートされていない関数の詳細については、MATLAB Compiler の制限を参照してください。pyproject.toml— ビルド システム要件および情報が含まれた構成ファイル。pipでパッケージをビルドする際に使用されます。詳細については、pip.pypa.io/en/stable/reference/build-system/pyproject-tomlを参照してください。readme.txt— パッケージ化およびインターフェイスの情報が含まれるテキスト ファイル。requiredMCRProducts.txt— MATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。setup.py— パッケージをインストールする Python ファイル。unresolvedSymbols.txt— 未解決のシンボルに関する情報が含まれるテキスト ファイル。
メモ
生成されたパッケージに MATLAB Runtime やインストーラーは含まれていません。
buildResultsオブジェクトを使用してインストーラーを作成するには、compiler.package.installerを参照してください。
MATLAB により生成された Python アプリケーションのインストールと実行
Python パッケージの作成後、これを Python アプリケーションから呼び出すことができます。この例では、パッケージ化の際に生成されたサンプル Python コードを使用します。このサンプル Python アプリケーション コードは、独自のアプリケーションを記述するためのガイドとして使用できます。
システム コマンド プロンプトで、
MagicSquarePkgpythonPackageフォルダーに移動します。pythonコマンドを使用してアプリケーションをインストールします。python -m pip install .
Python パッケージのインストールの詳細については、MATLAB Compiler SDK Python パッケージのインストールとインポートを参照してください。
パッケージをインストールした後、
makesqrSample1.pyが含まれるsamplesフォルダーに移動します。makesqrSample1.pyの内容を以下に示します。#!/usr/bin/env python """ Sample script that uses the MagicSquarePkg package created using MATLAB Compiler SDK. Refer to the MATLAB Compiler SDK documentation for more information. """ import MagicSquarePkg # Import the matlab module only after you have imported # MATLAB Compiler SDK generated Python modules. import matlab try: my_MagicSquarePkg = MagicSquarePkg.initialize() except Exception as e: print('Error initializing MagicSquarePkg package\\n:{}'.format(e)) exit(1) try: xIn = matlab.double([5], size=(1, 1)) yOut = my_MagicSquarePkg.makesqr(xIn) print(yOut, sep='\\n') except Exception as e: print('Error occurred during program execution\\n:{}'.format(e)) my_MagicSquarePkg.terminate()
Python サンプル アプリケーションは以下を実行します。
MagicSquarePkgパッケージをインポートするmatlabパッケージをインポートするtry-catchブロックを使用して例外を処理するmy_MagicSquarePkgという名前のMagicSquarePkgオブジェクトを初期化する入力引数
xInが含まれるmatlab.doubleオブジェクトを作成するmakesqrメソッドを呼び出し、出力をyOutに保存するyOutの内容を出力するmy_MagicSquarePkgインスタンスを終了する
MATLAB Runtime がインストールされている場合は、システム コマンド プロンプトでアプリケーションを実行できます。テスト目的で、MATLAB コマンド ウィンドウで、コマンドの前に
!演算子を追加してコマンドを実行することもできます。python makesqrSample1.py
Python サンプル アプリケーションは、サンプル MATLAB スクリプトと同じ出力を返します。
[[17.0,24.0,1.0,8.0,15.0],[23.0,5.0,7.0,14.0,16.0],[4.0,6.0,13.0,20.0,22.0], [10.0,12.0,19.0,21.0,3.0],[11.0,18.0,25.0,2.0,9.0]]
メモ
macOS では、
pythonの代わりにmwpythonスクリプトを使用する必要があります。たとえば、mwpython makesqrSample1.pyです。mwpythonスクリプトはフォルダーにあります。ここで、matlabroot/binmatlabrootは MATLAB または MATLAB Runtime がインストールされている場所です。
参考
mwpython | compiler.build.pythonPackage | mcc