matlab.engine的导入在IPython中工作,但在Jupyter中不工作
我刚刚使用matlab.engine的导入在IPython中工作,但在Jupyter中不工作,python,matlab,ipython,jupyter,jupyter-notebook,Python,Matlab,Ipython,Jupyter,Jupyter Notebook,我刚刚使用 $ python setup.py build --build-base=$HOME install --prefix=$HOME 但是,当我尝试从Jupyter笔记本中导入matlab.engine时,出现以下错误: --------------------------------------------------------------------------- EnvironmentError Traceback (most
$ 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
模块的\uuuu init\uuuu.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)
---------------------------------------------------------------------------
ImportError回溯(最近一次呼叫最后一次)
在()
---->1导入lib.import_模块(“matlabengineforpython2_7”)
/导入模块(名称、包)中的usr/local/anaconda-2.4.0/lib/python2.7/importlib/_uinit__;.pyc
35级+=1
36名称=_解析_名称(名称[级别:],包,级别)
--->37.进口(名称)
38返回系统模块[名称]
导入错误:/usr/lib64/libstdc++.so.6:找不到版本'GLIBCXX_3.4.15'(由/srv/local/matlab-2015a/extern/engines/python/dist/matlab/engine/glnxa64/../../../../../../../bin/glnxa64/libmwfl.so要求)
我不知道这里发生了什么。关于IPython Shell和Jupyter笔记本无法访问相同的C库的假设似乎是正确的。为什么会这样,我不知道。这两个版本是作为同一个包的一部分安装的,使用相同版本的Python等等 将以下行添加到我的
.bashrc
shell配置文件中修复了该问题:
export LD_LIBRARY_PATH=XXX
其中
XXX
是包含libstdc++版本的目录。因此.6
我希望Jupyter笔记本使用(而且IPython Shell已经使用过)。我现在有点不知所措了:importlib.import_模块(“matlabengineforpython2_7”)
现在引发了一个错误(带有不同的消息)在shell中--但是import matlab.engine
仍在shell中工作。^ah,对上述差异的解释是,importlib.import\u模块
命令仅在import matlab.engine
之前已执行的情况下才能在shell中工作。^已添加到sys.path
。我对整个问题原因的最佳猜测是,出于某种原因,ipython外壳和笔记本无法访问相同的C库。不过,我不知道如何检查或更改这个。
export LD_LIBRARY_PATH=XXX