【发布时间】:2015-08-09 20:56:24
【问题描述】:
在终端中安装matlab python包后使用:
cd "matlabroot\extern\engines\python"
python setup.py install
并尝试运行它,我得到一个段错误:
:~$ python
Python 2.7.10 |Anaconda 2.3.0 (x86_64)| (default, May 28 2015, 17:04:42)
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> import matlab.engine
Segmentation fault: 11
但是,我可以通过设置 DYLD_LIBRARY_PATH 来解决这个问题,之后 matlab.engine 可以工作:
:~$ export DYLD_LIBRARY_PATH=/System/Library/Frameworks/Python.framework/Versions/Current/lib:$DYLD_LIBRARY_PATH
:~$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import matlab.engine
>>> eng = matlab.engine.start_matlab()
>>> exit()
但是,当我之后尝试启动 iPython 时出现此错误:
Traceback (most recent call last):
File "//anaconda/bin/ipython", line 4, in <module>
from IPython import start_ipython
File "//anaconda/lib/python2.7/site-packages/IPython/__init__.py", line 45, in <module>
from .config.loader import Config
File "//anaconda/lib/python2.7/site-packages/IPython/config/__init__.py", line 6, in <module>
from .application import *
File "//anaconda/lib/python2.7/site-packages/IPython/config/application.py", line 19, in <module>
from IPython.config.configurable import SingletonConfigurable
File "//anaconda/lib/python2.7/site-packages/IPython/config/configurable.py", line 12, in <module>
from .loader import Config, LazyConfigValue
File "//anaconda/lib/python2.7/site-packages/IPython/config/loader.py", line 16, in <module>
from IPython.utils.path import filefind, get_ipython_dir
File "//anaconda/lib/python2.7/site-packages/IPython/utils/path.py", line 14, in <module>
import tempfile
File "//anaconda/lib/python2.7/tempfile.py", line 32, in <module>
import io as _io
File "//anaconda/lib/python2.7/io.py", line 51, in <module>
import _io
ImportError: dlopen(//anaconda/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyErr_ReplaceException
Referenced from: //anaconda/lib/python2.7/lib-dynload/_io.so
Expected in: dynamic lookup
如您所见,python 版本不同。我认为这是我的系统 Python 和 Anaconda 之间的冲突,但我不确定如何解决它,非常感谢任何帮助。 谢谢。
【问题讨论】:
-
我遇到了类似的问题 - 您找到解决方案了吗?
-
我发现这个类似的问题有一个解决方案 - 还没有尝试过。 stackoverflow.com/questions/33357739/….
-
会检查一下谢谢!
-
不,没有找到解决方案,所以如果它确实有效,请告诉我!
-
我为此头疼不已,因为即使在设置 DYLD_LIBRARY_PATH 之后它也不起作用。问题是我使用的是 iPython 而不是普通的 Python (2.7),所以一旦我使用了 matlab.engine 就可以了。然而,后来发生的一个问题是 matlab.engine 的行为不是很好。如果嵌套函数在另一个文件夹中,则使用嵌套函数调用函数不起作用,并且它也找不到某些内置函数。现在,我刚刚编写了一个 matlab 脚本,它可以满足我从 matlab 中的需要,并通过 Pyhton 中的子进程运行它。
标签: python macos matlab anaconda matlab-engine