python调用MATLAB函数中出现ModuleNotFoundError: No module named ‘matlabengineforpython3_7‘

最近做python调用MATLAB的函数遇到了一个很奇怪的bug,
原程序如下:

import numpy as np
import matlab.engine
eng = matlab.engine.connect_matlab()

在pycharm运行会报下面的错误

Traceback (most recent call last):
  File "C:\Users\10025\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\10025\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'

可以发现是在运行import matlab.engine的时候报的错,然而奇怪的是在cmd模式下运行这一句代码不会报错,并且MATLAB函数也能正常使用。调试了好久才无意中发现原因在于import matlab.engine这一句话写的位置,它应该写在第一行,也就是应该这样写

import matlab.engine
import numpy as np
eng = matlab.engine.connect_matlab()

这样程序就能正常运行了。
又调了一下程序发现,写成这样也是可以运行的

import sys
import matlab.engine
eng = matlab.engine.connect_matlab()

看起来好像是import matlab.engine前面导入的如果是某些python内置的模块的话能运行,但是我又发现这样写也会报错

import random
import matlab.engine
eng = matlab.engine.connect_matlab()

也就是说只有部分内置的模块在matlab.engine前面导入是可以运行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值