关于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()

得到如下结果的输出,证明完全安装成功!!

作者:一个菜菜怪

物联沃分享整理
物联沃-IOTWORD物联网 » 关于matlab和python版本的安装,matlab.engine报错

发表回复