Run MATLAB executable from Python
23 views (last 30 days)
Show older comments
Hi All,
This is a follow up to my previous question posted here, https://in.mathworks.com/matlabcentral/answers/1882532-run-matlab-executable-from-python?s_tid=srchtitle
I am trying to run a MATLAB executable (main.exe) from Python. main.exe file was generated using the .m files in my project, using the application compiler.
To run the executable from Python, I tried
import subprocess
cmd = r"C:/Windows/System32/cmd I:/sim/main/main.exe"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000)
process.wait()
But this doesn't generate the output file.
In MATLAB's command prompt, when I run the executable (!main) output is saved in the results folder in 50 secs.
But the output file isn't generated while running from Python.
Suggestions on how to run the executable in Python will be really helpful.
3 Comments
Roshan Swain
on 26 Dec 2022
Edited: Roshan Swain
on 26 Dec 2022
Hi,
As mentioned in the python documentation using wait() with stdout=PIPE can cause deadlock. Refer here: https://docs.python.org/2/library/subprocess.html#subprocess.Popen:~:text=Warning%20This%20will%20deadlock%20when%20using%20stdout%3DPIPE%20and/or%20stderr%3DPIPE%20and%20the%20child%20process%20generates%20enough%20output%20to%20a%20pipe%20such%20that%20it%20blocks%20waiting%20for%20the%20OS%20pipe%20buffer%20to%20accept%20more%20data.%20Use%20communicate()%20to%20avoid%20that.
Try using the communicate() method instead of wait(), like this:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000).communicate()
Also much better if you place the executable file in the same location as python file for testing( can avoid any path issues for now),
Let me know if this resolves the issue, then I will create an answer for this one.
Answers (0)
See Also
Categories
Find more on Python Package Integration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!