Programmatically add toolbox within MATLAB docker container.
A MATLAB script is running in the cloud as a docker container.
Steps that I would like the script to do:
Fetch a .mltbx file from a REST API.
Remove previously installed toolboxes
Install new toolbox .
Run a function from this toolbox.
For step 2 and 3 I am using these functions.
‘matlab.addons.toolbox.installedToolboxes’
‘matlab.addons.toolbox.uninstallToolbox(toolbox)’
‘matlab.addons.toolbox.installToolbox(toolbox)’
This works when I run the script locally but when I package it as a docker container using MATLAB compiler and ran it in the cloud the following error is thrown for the installedToolboxes function.
Unable to resolve the name ‘matlab.addons.toolbox.installedToolboxes’.
‘matlab.addons.toolbox.installedToolboxes’ was excluded from packaging for the MATLAB Runtime environment according to the MATLAB Compiler license.
Have the application owner either resolve the file or function from the code, or use the MATLAB function "isdeployed" to ensure the function is not invoked.
Contact the application owner for more details.
MATLAB:undefinedVarOrClass
I also tried to unzip the .mltbx file and copy the .m files to an existing path that is already present in the searchpath. That works but executing the .m file throws the following error:
Previously accessible file "/home/appuser/.MathWorks/MatlabRuntimeCache/R2024b/modelB0/modelBatch/FlowQ.m" is now inaccessible. │
│
Error in fetchAndInstallToolbox (line 41) │
│
Error in modelBatch (line 40) │
│
MATLAB:fileHasDisappeared
I understand that since R2019a, functions that modify the MATLAB search path are unsupported when using MATLAB Compiler. Both things that I tried modify the MATLAB runtime environment in the docker image, so I guess it is normal that these don’t work.
Is there a way to get around this? Is it possible to dynamically add new classes and functions to a docker container?A MATLAB script is running in the cloud as a docker container.
Steps that I would like the script to do:
Fetch a .mltbx file from a REST API.
Remove previously installed toolboxes
Install new toolbox .
Run a function from this toolbox.
For step 2 and 3 I am using these functions.
‘matlab.addons.toolbox.installedToolboxes’
‘matlab.addons.toolbox.uninstallToolbox(toolbox)’
‘matlab.addons.toolbox.installToolbox(toolbox)’
This works when I run the script locally but when I package it as a docker container using MATLAB compiler and ran it in the cloud the following error is thrown for the installedToolboxes function.
Unable to resolve the name ‘matlab.addons.toolbox.installedToolboxes’.
‘matlab.addons.toolbox.installedToolboxes’ was excluded from packaging for the MATLAB Runtime environment according to the MATLAB Compiler license.
Have the application owner either resolve the file or function from the code, or use the MATLAB function "isdeployed" to ensure the function is not invoked.
Contact the application owner for more details.
MATLAB:undefinedVarOrClass
I also tried to unzip the .mltbx file and copy the .m files to an existing path that is already present in the searchpath. That works but executing the .m file throws the following error:
Previously accessible file "/home/appuser/.MathWorks/MatlabRuntimeCache/R2024b/modelB0/modelBatch/FlowQ.m" is now inaccessible. │
│
Error in fetchAndInstallToolbox (line 41) │
│
Error in modelBatch (line 40) │
│
MATLAB:fileHasDisappeared
I understand that since R2019a, functions that modify the MATLAB search path are unsupported when using MATLAB Compiler. Both things that I tried modify the MATLAB runtime environment in the docker image, so I guess it is normal that these don’t work.
Is there a way to get around this? Is it possible to dynamically add new classes and functions to a docker container? A MATLAB script is running in the cloud as a docker container.
Steps that I would like the script to do:
Fetch a .mltbx file from a REST API.
Remove previously installed toolboxes
Install new toolbox .
Run a function from this toolbox.
For step 2 and 3 I am using these functions.
‘matlab.addons.toolbox.installedToolboxes’
‘matlab.addons.toolbox.uninstallToolbox(toolbox)’
‘matlab.addons.toolbox.installToolbox(toolbox)’
This works when I run the script locally but when I package it as a docker container using MATLAB compiler and ran it in the cloud the following error is thrown for the installedToolboxes function.
Unable to resolve the name ‘matlab.addons.toolbox.installedToolboxes’.
‘matlab.addons.toolbox.installedToolboxes’ was excluded from packaging for the MATLAB Runtime environment according to the MATLAB Compiler license.
Have the application owner either resolve the file or function from the code, or use the MATLAB function "isdeployed" to ensure the function is not invoked.
Contact the application owner for more details.
MATLAB:undefinedVarOrClass
I also tried to unzip the .mltbx file and copy the .m files to an existing path that is already present in the searchpath. That works but executing the .m file throws the following error:
Previously accessible file "/home/appuser/.MathWorks/MatlabRuntimeCache/R2024b/modelB0/modelBatch/FlowQ.m" is now inaccessible. │
│
Error in fetchAndInstallToolbox (line 41) │
│
Error in modelBatch (line 40) │
│
MATLAB:fileHasDisappeared
I understand that since R2019a, functions that modify the MATLAB search path are unsupported when using MATLAB Compiler. Both things that I tried modify the MATLAB runtime environment in the docker image, so I guess it is normal that these don’t work.
Is there a way to get around this? Is it possible to dynamically add new classes and functions to a docker container? matlab compiler, toolbox, addons MATLAB Answers — New Questions