Unable to use Python matlab.engine in a Docker container

조회 수: 33 (최근 30일)
Eric Hamer
Eric Hamer 2016년 12월 29일
댓글: Vadim Nemytov 2022년 8월 31일
I am attempting to install Matlab in a Docker container where I will be using the Python matlab.engine class. I am able to install Matlab silently and do a silent activation. These both succeed. I am also able to install this class via python setup.py install.
After this, when I bring up python in my container, I am able to import matlab.engine without issue. When I then try to execute: matlab.engine.start_matlab(), I get the following errors:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/matlab/engine/__init__.py", line 112, in start_matlab
eng = future.result()
File "/usr/local/lib/python2.7/site-packages/matlab/engine/futureresult.py", line 68, in result
return self.__future.result(timeout)
File "/usr/local/lib/python2.7/site-packages/matlab/engine/matlabfuture.py", line 87, in result
handle = pythonengine.getMATLAB(self._future)
matlab.engine.EngineError: Unable to launch MVM server: License Error
Why is this happening? I do have a valid license and this was specified when I did the install.
Thanks,
Eric Hamer
Quantiacs
  댓글 수: 2
Eric Hamer
Eric Hamer 2017년 1월 3일
When I run matlab -nodesktop -r 'disp hello; exit', the system response is "bash: matlab: command not found"
Please advise.
Walter Roberson
Walter Roberson 2017년 1월 3일
At installation time on Linux, MATLAB offers to create a link in /usr/local/bin . That link might not have been created, or /usr/local/bin itself might not happen to be on your path.

댓글을 달려면 로그인하십시오.

답변 (3개)

Marc Lasch
Marc Lasch 2018년 6월 5일
You need a ".lic" license file which should be copied to
.matlab/R2018a_licenses/
in your user's homefolder. However I had a problem with that license file because of the network interface in my container (which was host0). The license file is bound to a mac address in the machine. The virtual Ethernet interface of the container was not recognized by matlab (at least in a systemd-nspawn container).

Bo Li
Bo Li 2017년 1월 3일
Does MATLAB itself run with the Docker container, for example:
matlab -nodesktop -r 'disp hello; exit'

Eric Hamer
Eric Hamer 2017년 1월 4일
편집: Walter Roberson 2017년 1월 5일
When I execute this: /usr/local/R2016b/bin/matlab -nodesktop -r 'disp hello; exit'
I get this as the response:
MATLAB is selecting SOFTWARE OPENGL rendering.
root@cff09122de9a:/install# -------------------------------------
Error: Activation cannot proceed. You may either:
1. Set an X11 display, and restart the activation process
2. Use the silent activation feature
3. Activate using the license center
------------------------------------------------------------------
While still in the container, I repeated the silent activation and it succeeded, but when I ran the above command, the result was the same.
Please advise.
Eric
  댓글 수: 2
Guillaume Garreau
Guillaume Garreau 2017년 6월 23일
hello, Have you found the solution?
Vadim Nemytov
Vadim Nemytov 2022년 8월 31일
on Llinux:
  1. before entering the container type: xauth list $DISPLAY
  2. launch your container as with this command: docker run --env DISPLAY --net=host -v /tmp/.X11-unix -it localhost:5000/vn_centos7:R2020a (where the last part is your own IMAGE_NAME:IMAGE_TAG_NAME. for me IMAGE_NAME is localhost:5000/vn_centos7 and IMAGE_TAG_NAME is R2020a)
  3. when you enter the container make sure that this file exists: ~/.Xauthority If it doesn't exist, create it via this command: touch ~/.Xauthority
  4. inside the container type: xauth add LONG_OUTPUT_FROM_THE_FIRST_COMMAND_ABOVE
  5. container should xauth and other things pre-installed. At least on Centos7 docker image these are needed to handle GUI (for e.g. R2022a): yum install -y xauth gtk2 at-spi2-atk alsa-lib

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Call MATLAB from Python에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by