关于matlab和python版本的安装,matlab.engine报错
问题:代码需要,在python中驱动matlab运行,此处需要调用到matlab。故需要对matlab的安装联动。
例如:引用”import matlab.engine“
import matlab.engine
def start_matlab_engine():
return matlab.engine.start_matlab()
出现以下问题:找不到模块
Traceback (most recent call last): File "test.py", line 1, in <module> import matlab.engine ModuleNotFoundError: No module named 'matlab'
遇到很多坑,特此记录,希望遇到同样问题的人可以快速解决。
问题一:版本问题,查看自己的matlab和python版本匹配
1、matlab的安装路径:D:\Program Files\MATLAB\R2021a\extern\engines\python
在此处找到setup.py文件
从中可看到自己的版本匹配哪些python,例如我的2021a,对应的如下,此处我用3.8
版本不匹配的话,重新创建一个新的虚拟环境,重装3.8版本。安装方式不过多赘述
问题二:驱动安装setup.py文件的问题,此处多坑
坑一:cmd进入matlab的根目录下D:\Program Files\MATLAB\R2021a\extern\engines\python
因为有虚拟环境,所以要进去这一步要在自己的虚拟环境中安装
之后检查自己的环境中是否有需要的此模块"matlabengineforpython"(可能会出现之前已经安装,失败各种原因,第一次安装或者失败的话,是不存在这个matlab的api的)
正常是没有的
接着输入 进行驱动安装
python setup.py install
但是此步可能会出现各种问题:matlab的版本不是对应的版本,不可用等
(myenv) D:\Program Files\MATLAB\R2021a\extern\engines\python>python setup.py install
Traceback (most recent call last):
File "setup.py", line 80, in <module>
setup(
File "d:\Users\admin\anaconda3\envs\myenv\lib\site-packages\setuptools\_distutils\core.py", line 145, in setup
_setup_distribution = dist = klass(attrs)
File "d:\Users\admin\anaconda3\envs\myenv\lib\site-packages\setuptools\dist.py", line 333, in __init__
self.metadata.version = self._normalize_version(self.metadata.version)
File "d:\Users\admin\anaconda3\envs\myenv\lib\site-packages\setuptools\dist.py", line 369, in _normalize_version
normalized = str(Version(version))
File "d:\Users\admin\anaconda3\envs\myenv\lib\site-packages\packaging\version.py", line 202, in __init__
raise InvalidVersion(f"Invalid version: '{version}'")
packaging.version.InvalidVersion: Invalid version: 'R2021a'
解决方案一: 可能是版本不对,尝试使用这个安装
来源:https://kr.mathworks.com/matlabcentral/answers/1998578-invalid-version-r2021-when-installing-for-python-3-7-3-9
python -m pip install matlabengine==9.11.21
但是我用着没用,提示我的版本时9.10,和这个不匹配,有冲突。
解决方案二:更新setuptool工具的API版本,
python -m pip install --upgrade setuptools
醉了,我的更新成功了,但还是报错了,报错如下:
File "C:\Users\admin\AppData\Local\Temp\pip-build-env-tp7d5ncj\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 973, in run_command
cmd_obj.run()
File "<string>", line 294, in run
File "<string>", line 146, in get_matlab_root_from_windows_reg
File "<string>", line 186, in _find_matlab_key_from_windows_registry
RuntimeError: No compatible MATLAB installation found in Windows Registry. This release of MATLAB Engine API for Python is compatible with version 9.11. The found versions were 9.10.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for matlabengine
Failed to build matlabengine
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (matlabengine)
此处出现的原因是因为,自己的版本和驱动版本还是不匹配,版本等级更新过高,用不到这个,所以可以试试同问题的话,找对应的驱动版本。
解决方案三:安装其他版本的setuptool
pip install setuptools==65.0.0
上面的版本是和我的版本匹配的,所安装这个终于成功了!!!
显示成功安装之后,在此驱动setup.py的安装。
显示如下图,证明安装成功!!!!!!!!!!!
之后使用pip list 检查,出现这种情况的话 显示成功,可以测试!
测试:
创建一个python文件,调用 matlab.engine,进入到自己的虚拟环境中运行
import matlab.engine
# 启动 MATLAB 引擎
eng = matlab.engine.start_matlab()
# 测试 MATLAB 引擎
result = eng.sqrt(16.0) # 计算平方根
print(f"The square root of 16 is: {result}")
# 关闭 MATLAB 引擎
eng.quit()
得到如下结果的输出,证明完全安装成功!!
作者:一个菜菜怪