MATLAB py.sys.executable on Windows points to MATLAB.exe and not python.exe

1 view (last 30 days)
I'm working on calling a Python library from MATLAB. The sys.executable property, which should refer to the Python executable, actually points to MATLAB.exe but only on Windows.
  • Python on LInux sys.executable is a Python string /usr/XXX/bin/python, as it should be
  • MATLAB in Linux: py.sys.executable is /usr/XXX/bin/python, as it should be
  • Python on Windows, sys.executable is "C:\..\python.exe", as it should be
  • MATLAB on Windows, py.sys.executable is "C:\...\MATLAB.exe" , wrong!
This was tested in Windows 10 with MATLAB R2022a and Python 3.9.13

Accepted Answer

Paul Rutten
Paul Rutten on 15 Aug 2022
Hi Michael,,
I can confirm that the py.sys.executable points to the MATLAB executable on Windows 10 with MATLAB 19a, 21a, 21b, and 22b (I do not have 22a installed). I do not know about a workaround for this.
The sys.executable attribute in the Python process also points to the MATLAB executable. This can be worked around by expanding on the workaround provided for the incorrect [sys.prefix and sys.exec_prefix] attributes in the Python process and ensuring that the sys.executable attribute in the Python process points to the correct executable.
For me overriding the incorrect attribute values in the Python sys module resolved some issues with using Python modules from MATLAB.
  1 Comment
Michael Posa
Michael Posa on 15 Aug 2022
Thank you. The link you pointed to do did create a workaround. For completeness, from MATLAB, I can call
if ispc
py.FixSysExecutable.SetSysExecutable(pyenv().Executable)
end
using the Python file FixSysExecutable.py.
import sys
def SetSysExecutable(path):
sys.executable = path
return sys.executable

Sign in to comment.

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!