starting docker mathworks/matlab:r2023b from Python fails with licensing issue while running matlab from the docker's shell runs well
14 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(2 个)
Prabhakar
2023-10-13
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 个评论
Prabhakar
2023-12-11
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
>>>
Prabhakar
2023-12-11
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 个评论
William Beresford
2023-12-11
Great, thanks. I have updated our custom image to use the latest 2023b image as the base image and it now works well.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Call MATLAB from Python 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!