生成 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 包。
创建调用您的函数的 MATLAB 示例脚本。将以下代码保存在名为
makesqrSample1.m的示例文件中。% Sample script to demonstrate execution of function y = makesqr(x) x = 5; y = makesqr(x);在打包过程中,MATLAB Compiler SDK 会使用该示例 MATLAB 脚本生成目标语言的示例应用程序。有关详细信息,请参阅创建示例代码来调用导出函数。
使用
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 上,您必须使用
mwpython脚本,而不能使用python。例如,mwpython makesqrSample1.py。mwpython脚本位于文件夹中,其中matlabroot/binmatlabroot是 MATLAB 或 MATLAB Runtime 的安装位置。
另请参阅
mwpython | compiler.build.pythonPackage | mcc