メインコンテンツ

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     9

compiler.build.pythonPackage を使用した Python パッケージの作成

プログラムによる方法を使用して Python パッケージをビルドします。あるいは、グラフィカル インターフェイスを使用して Python パッケージを作成する場合は、Create Python Package Using Python Package Compiler Appを参照してください。

  1. 関数を呼び出す 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を参照してください。

  2. 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 には、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報が含まれています。

  3. この関数により、現在の作業ディレクトリにある 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.txtMATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。

    • setup.py — パッケージをインストールする Python ファイル。

    • unresolvedSymbols.txt — 未解決のシンボルに関する情報が含まれるテキスト ファイル。

    メモ

    生成されたパッケージに MATLAB Runtime やインストーラーは含まれていません。buildResults オブジェクトを使用してインストーラーを作成するには、compiler.package.installer を参照してください。

MATLAB により生成された Python アプリケーションのインストールと実行

Python パッケージの作成後、これを Python アプリケーションから呼び出すことができます。この例では、パッケージ化の際に生成されたサンプル Python コードを使用します。このサンプル Python アプリケーション コードは、独自のアプリケーションを記述するためのガイドとして使用できます。

  1. システム コマンド プロンプトで、MagicSquarePkgpythonPackage フォルダーに移動します。

  2. python コマンドを使用してアプリケーションをインストールします。

    python -m pip install .

    Python パッケージのインストールの詳細については、MATLAB Compiler SDK Python パッケージのインストールとインポートを参照してください。

  3. パッケージをインストールした後、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 インスタンスを終了する

  4. 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/bin フォルダーにあります。ここで、matlabroot は MATLAB または MATLAB Runtime がインストールされている場所です。

参考

| |

トピック