Unable to use Python matlab.engine in a Docker container

32 次查看(过去 30 天)
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 个评论
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