导入matlab.engine在IPython中有效,但在Jupyter中无效
作者:互联网
我刚刚使用以下命令将适用于Python的MATLAB Engine API安装到了我的主目录中
$python setup.py build --build-base=$HOME install --prefix=$HOME
但是,当我尝试从Jupyter笔记本导入matlab.engine时,出现以下错误:
---------------------------------------------------------------------------
EnvironmentError Traceback (most recent call last)
<ipython-input-2-833daa01cd46> in <module>()
8 import numpy as np
9 import matplotlib.pyplot as plt
---> 10 import matlab.engine
11
12 from dopa_net.behavioral_experiments.analysis_code import behavior_analysis as ba
/home/despo/dbliss/lib/matlab/engine/__init__.py in <module>()
57 pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
58 except:
---> 59 raise EnvironmentError('The installation of MATLAB Engine for Python is '
60 'corrupted. Please reinstall it or contact '
61 'MathWorks Technical Support for assistance.')
EnvironmentError: The installation of MATLAB Engine for Python is corrupted. Please reinstall it or contact MathWorks Technical Support for assistance.
奇怪的是,当我从Jupyter笔记本所在的目录中的IPython shell中导入matlab.engine时,没有出现此错误.我不仅可以从shell导入引擎,它还可以在shell中工作,这向我展示了没有损坏的东西:
In [1]: import matlab.engine
In [2]: eng = matlab.engine.start_matlab()
In [3]: tf = eng.isprime(37)
In [4]: print tf
True
有什么想法吗?
注:我确实在今天早些时候将引擎的一个版本安装到了我的主目录中,但是我尝试(并认为自己确实)将其卸载了.我的猜测是它的某些部分被抛在了后面,并造成了麻烦.但是,为什么它仅对Jupyter而不对IPython Shell造成麻烦? (您怎么猜我应该摆脱它?)
更新
我将错误跟踪到了matlab.engine模块的__init__.py文件中的以下行:
importlib.import_module("matlabengineforpython2_7")
这不会在IPython Shell中引发错误,但是会在Jupyter中引发以下错误:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-4-831d184262c4> in <module>()
----> 1 importlib.import_module("matlabengineforpython2_7")
/usr/local/anaconda-2.4.0/lib/python2.7/importlib/__init__.pyc in import_module(name, package)
35 level += 1
36 name = _resolve_name(name[level:], package, level)
---> 37 __import__(name)
38 return sys.modules[name]
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /srv/local/matlab-2015a/extern/engines/python/dist/matlab/engine/glnxa64/../../../../../../../bin/glnxa64/libmwfl.so)
我不知道这是怎么回事.
解决方法:
IPython Shell和Jupyter Notebook无法访问相同的C库的假设似乎是正确的.为什么会这样,我不知道.两者是作为同一软件包的一部分安装的,使用相同版本的Python等.
将以下行添加到我的.bashrc shell配置文件中可解决此问题:
export LD_LIBRARY_PATH=XXX
其中XXX是包含libstdc .so.6版本的目录,我希望Jupyter Notebook使用(并且IPython Shell已在使用).
标签:python,matlab,jupyter-notebook,ipython,jupyter 来源: https://codeday.me/bug/20191010/1884466.html