主要内容

本页采用了机器翻译。点击此处可查看英文原文。

生成 Python 包并编译 Python 应用程序

支持的平台:Windows®、Linux®Mac

此示例说明如何从 MATLAB® 函数创建 Python® 包,然后将该包集成到使用 MATLAB Compiler SDK™ 生成的 Python 应用程序中。

前提条件

  • 验证是否已满足生成 Python 包和运行 Python 应用程序的系统要求。有关详细信息,请参阅MATLABCompiler SDK Python 目标要求

  • 最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime

    出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime

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 包,请参阅使用 Python 包编译器创建 Python 包

  1. 创建调用您的函数的 MATLAB 示例脚本。将以下代码保存在名为 makesqrSample1.m 的示例文件中。

    % Sample script to demonstrate execution of function y = makesqr(x)
    x = 5;
    y = makesqr(x);

    在打包过程中,MATLAB Compiler SDK 会使用该示例 MATLAB 脚本生成目标语言的示例应用程序。有关详细信息,请参阅创建示例代码来调用导出函数

  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 的文件夹中生成文件。有关生成的文件的信息,请参阅 打包 MATLAB 函数后生成的文件

    注意

    生成的包不包含 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.pysamples 文件夹。

    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_MagicSquarePkgMagicSquarePkg 对象

    • 创建包含输入参量 xInmatlab.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 上,您必须使用 mwpython 脚本,而不能使用 python。例如,mwpython makesqrSample1.py

    mwpython 脚本位于 matlabroot/bin 文件夹中,其中 matlabroot 是 MATLAB 或 MATLAB Runtime 的安装位置。

另请参阅

| |

主题