Docker中无法运行Matlab SDK Python模块,本地运行正常
Docker容器中运行Matlab生成的Python模块故障排查
本地成功运行步骤
- 安装Matlab编译运行时(MCR)
- 通过Matlab Compiler SDK生成
test_function模块,执行python setup.py install完成安装 - 本地运行以下代码可成功执行:
import test_function mypkg = test_function.initialize() arg1 = 1 arg2 = 2 out1, out2 = mypkg.test_function(arg1, arg2, nargout=2) print(out1, out2) mypkg.terminate()
Docker构建阶段报错
基于mathworks/matlab-runtime-deps:R2023b镜像编写Dockerfile,将生成的test_function模块目录和已解压的Linux 64位MCR目录复制到容器内,执行MCR安装命令时出现以下错误:
构建失败:rpc错误,代码=未知描述,进程"/bin/sh -c sudo -H ./matlab_runtime/install"未成功完成,退出代码:42
相关Dockerfile片段:
FROM mathworks/matlab-runtime-deps:R2023b # 其他无关命令 # ... RUN apt-get install -y python3.9 python3-pip COPY test_function /app/test_function COPY matlab_runtime /app/matlab_runtime RUN ls /app/matlab_runtime RUN pip install setuptools WORKDIR /app USER root RUN chmod +x ./matlab_runtime/install RUN python3 test_function/setup.py install RUN sudo -H ./matlab_runtime/install
改用make安装后的运行报错
修改Dockerfile,先安装make再执行MCR安装命令,Docker构建过程无报错,但在容器内运行Python脚本时出现:
属性错误:模块'LC_filter_for_AI'没有'initialize'属性
使用dir(test_function)查看模块属性,仅返回基础内容:
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
而本地正常安装的模块包含initialize等关键属性:
['_PathInitializer', '__builtins__', '__cached__', '__doc__', '__exit_packages', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_pir', 'atexit', 'glob', 'importlib', 'initialize', 'initialize_runtime', 'os', 'pdb', 'platform', 're', 'sys', 'terminate_runtime', 'weakref']
内容的提问来源于stack exchange,提问作者Sayyor Y
相关产品推荐
相关产品推荐

