La importación de matlab.engine funciona en IPython pero no en Jupyter
Acabo de instalar la API del motor MATLAB para Python en mi directorio de inicio usando
$ python setup.py build --build-base=$HOME install --prefix=$HOME
Sin embargo, cuando trato deimport matlab.engine
de un cuaderno Jupyter, recibo el siguiente error:
---------------------------------------------------------------------------
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.
Curiosamente, no recibo este error cuandoimport matlab.engine
desde un shell de IPythonen el mismo directorio que el cuaderno Jupyter. No solo puedo importar el motor desde el shell, sino que funciona en el shell, lo que me demuestra que nada está dañado:
In [1]: import matlab.engine
In [2]: eng = matlab.engine.start_matlab()
In [3]: tf = eng.isprime(37)
In [4]: print tf
True
¿Alguna idea de qué está pasando?
nótese bien Instalé una versión del motor en mi directorio de inicio hoy, pero intenté desinstalarlo (y pensé que lo hice). Mi conjetura es que parte de ella se ha quedado atrás y está causando problemas. Pero, ¿por qué está causando problemas solo para Jupyter y no para el shell de IPython? (¿Y cómo adivinarías que debería deshacerme de él?)
ActualizarSeguí el error a la siguiente línea en el__init__.py
archivo para elmatlab.engine
módulo:
importlib.import_module("matlabengineforpython2_7")
que no genera un error en el shell de IPython, pero genera el siguiente error en 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)
No tengo idea de lo que está pasando aquí.