MATLAB Engine API for Python 3.7
14 次查看(过去 30 天)
显示 更早的评论
I am trying to call a Matlab script from my Python script. I have installed the MATLAB Engine API for Python. I am using 64-bit version of Matlab and Python. I am using Python 3.7.4. Which, accoding to this, should be supported:
However, when I try to compile this code:
import matlab.engine
eng = matlab.engine.start_matlab()
eng.main(nargout=0)
I get these error messages:
Traceback (most recent call last):
File "C:\Users\psvendsen\AppData\Local\Programs\Python\Python37\lib\site-packages\matlab\engine\__init__.py", line 45, in <module>
pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
File "C:\Users\psvendsen\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'matlabengineforpython3_7'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\psvendsen\AppData\Local\Programs\Python\Python37\lib\site-packages\matlab\engine\__init__.py", line 61, in <module>
pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
File "C:\Users\psvendsen\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
File "<frozen importlib._bootstrap>", line 583, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1043, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: DLL load failed: The parameter is incorrect.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\psvendsen\OneDrive - Revision Military\Desktop\Python-Matlab Bridge\main.py", line 10, in <module>
import matlab.engine
File "C:\Users\psvendsen\AppData\Local\Programs\Python\Python37\lib\site-packages\matlab\engine\__init__.py", line 64, in <module>
'MathWorks Technical Support for assistance: %s' % e)
OSError: Please reinstall MATLAB Engine for Python or contact MathWorks Technical Support for assistance: DLL load failed: The parameter is incorrect.
[Finished in 0.8s]
Any idea what is wrong?
1 个评论
iSinnerman
2019-12-7
I've solved this by using Python 3.6.8
One search showed that you need to be using the same bit versions of Matlab and Python, e.g. both 32 bit or both 64 bit. I checked my Matlab version and it was 64 bit. I was using Python 3.7 64 bit so I then decided to try Python 3.6.8 and it all went as per the API install instructions on the Matlab site. I also found that I had to install Python with the custom options (as per another post), install as system administrator -> custom options -> additionally check for all users and add python to environment variables -> install. You can check if Python is installed as Matlab needs it to be installed, by typing python at the command prompt in windows and see if it starts python properly.
采纳的回答
更多回答(1 个)
Dmitry Boltyanskiy
2020-7-9
I have moved the operator
import matlab.engine
to the first row of script and this make good result.
Before that the script worked under IDE PyCharm. But the script was showing this Error when I launched in terminal.
另请参阅
类别
在 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!