starting docker mathworks/matlab:r2023b from Python fails with licensing issue while running matlab from the docker's shell runs well

38 vues (au cours des 30 derniers jours)
I am using docker built from mathworks/matlab:r2023b and am running the following Python code to start the engine.
self.matlab_engine: MatlabEngine = matlab.engine.start_matlab()
This fails to start Matlab with error:
matlab.engine.EngineError: Unable to launch MVM server: License Error: Licensing shutdown
.
self.matlab_engine: MatlabEngine = matlab.engine.start_matlab()
File "/usr/local/lib/python3.10/dist-packages/matlab/engine/__init__.py", line 128, in start_matlab
eng = future.result()
File "/usr/local/lib/python3.10/dist-packages/matlab/engine/futureresult.py", line 67, in result
return self.__future.result(timeout)
File "/usr/local/lib/python3.10/dist-packages/matlab/engine/matlabfuture.py", line 87, in result
handle = pythonengine.getMATLAB(self._future)
matlab.engine.EngineError: Unable to launch MVM server: License Error: Licensing shutdown
env. variable is set during docker run with
-e MLM_LICENSE_FILE=1234@lic_server.abc.company.com
If I run Matlab directly from the command line is works fine.
Any idea what is missing in my enviironment?

Réponses (2)

Prabhakar
Prabhakar le 13 Oct 2023
Hi Shlomi
I suspect that the environment variable "MLM_LICENSE_FILE" is not being honored in the mathworks/matlab:r2023b container due to the presence of this file /opt/matlab/R2023b/licenses/license_info.xml
This is a known issue, and we are actively working towards releasing a newer version of the container image which should fix it for you.
In the mean time, could you try the following to work around the issue:
MatlabEngine = matlab.engine.start_matlab('-licmode file')
  3 commentaires
Prabhakar
Prabhakar le 11 Déc 2023
The mathworks/matlab:r2023b containers have already been updated on DockerHub to include the fix to this issue.
Shown below are the steps I took to verify that this works now:
$ docker run -it --rm -e MLM_LICENSE_FILE=1234@lic_server.abc.company.com --entrypoint /bin/bash mathworks/matlab:r2023b
matlab@0e3b71b68603:~/Documents/MATLAB$ export LD_LIBRARY_PATH=/opt/matlab/R2023b/bin/glnxa64
matlab@0e3b71b68603:~/Documents/MATLAB$ python -m pip install matlabengine
Defaulting to user installation because normal site-packages is not writeable
Collecting matlabengine
Downloading matlabengine-23.2.1.tar.gz (18 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: matlabengine
Building wheel for matlabengine (pyproject.toml) ... done
Created wheel for matlabengine: filename=matlabengine-23.2.1-py3-none-any.whl size=16895 sha256=6759b5317c2da7fc8e6c65124849bdaeda3b1ac7c0e046585b7866c5bb5410e3
Stored in directory: /home/matlab/.cache/pip/wheels/a8/33/f3/84a8299d4675c04ea1a01073f8e347e6c8498ad8789201e220
Successfully built matlabengine
Installing collected packages: matlabengine
Successfully installed matlabengine-23.2.1
matlab@0e3b71b68603:~/Documents/MATLAB$ python
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matlab.engine
>>> eng = matlab.engine.start_matlab()
>>> eng.sqrt(4.0)
2.0
>>>

Connectez-vous pour commenter.


Prabhakar
Prabhakar le 11 Déc 2023
mathworks/matlab:r2023b has been updated to include the fix to this issue.
Verify it by:
Pulling the latest image from dockerhub:
docker pull mathworks/matlab:r2023b
Run container with MLM_LICENSE_FILE specified, and run MATLAB Engine for Python:
$ docker run -it --rm -e MLM_LICENSE_FILE=1234@lic_server.abc.company.com --entrypoint /bin/bash mathworks/matlab:r2023b
matlab@0e3b71b68603:~/Documents/MATLAB$ export LD_LIBRARY_PATH=/opt/matlab/R2023b/bin/glnxa64
matlab@0e3b71b68603:~/Documents/MATLAB$ python -m pip install matlabengine
Defaulting to user installation because normal site-packages is not writeable
Collecting matlabengine
Downloading matlabengine-23.2.1.tar.gz (18 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: matlabengine
Building wheel for matlabengine (pyproject.toml) ... done
Created wheel for matlabengine: filename=matlabengine-23.2.1-py3-none-any.whl size=16895 sha256=6759b5317c2da7fc8e6c65124849bdaeda3b1ac7c0e046585b7866c5bb5410e3
Stored in directory: /home/matlab/.cache/pip/wheels/a8/33/f3/84a8299d4675c04ea1a01073f8e347e6c8498ad8789201e220
Successfully built matlabengine
Installing collected packages: matlabengine
Successfully installed matlabengine-23.2.1
matlab@0e3b71b68603:~/Documents/MATLAB$ python
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matlab.engine
>>> eng = matlab.engine.start_matlab()
>>> eng.sqrt(4.0)
2.0
>>>
  1 commentaire
William Beresford
William Beresford le 11 Déc 2023
Great, thanks. I have updated our custom image to use the latest 2023b image as the base image and it now works well.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Call MATLAB from Python dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by