安装Matlab Engine后调用start_matlab触发段错误(EXC_BAD_ACCESS)求助
解决Matlab Engine启动段错误(Segmentation Fault)的方案
我之前帮不少开发者解决过类似的问题,结合你用brew安装Python 2.7.14、运行在Mac OSX High Sierra的环境,以下是几个针对性的解决思路,你可以逐一尝试:
1. 确保Matlab Engine和你的Python路径完全匹配
Matlab Engine对Python的安装路径要求很严格,brew装的Python是独立于系统默认Python的,很可能因为路径不匹配导致动态链接库冲突:
- 先打开Matlab,在命令行输入:
看看输出的Python路径是不是你brew安装的那个(pyversion/usr/local/Cellar/python@2/2.7.14_3/...)。如果不是,得先让Matlab指向正确的Python:
然后重新安装Matlab Engine:pyversion('/usr/local/Cellar/python@2/2.7.14_3/Frameworks/Python.framework/Versions/2.7/bin/python')
记得把cd "/Applications/MATLAB_R20XXx.app/extern/engines/python" python setup.py installMATLAB_R20XXx换成你实际的Matlab版本号,比如R2018a或者R2019b。
2. 调整动态链接库的加载顺序
段错误大多是因为动态库加载冲突,你可以通过设置环境变量让Python优先加载Matlab的库:
- 启动Python之前,先在终端执行这两行命令(要是想永久生效,可以把它们加到你的
.bash_profile或者.zshrc文件里):
之后再启动Python,试试调用export DYLD_LIBRARY_PATH="/Applications/MATLAB_R20XXx.app/bin/maci64:$DYLD_LIBRARY_PATH" export LD_LIBRARY_PATH="/Applications/MATLAB_R20XXx.app/bin/maci64:$LD_LIBRARY_PATH"matlab.engine.start_matlab()。
3. 用系统默认Python做测试
如果上面的方法都不管用,可以暂时切换到系统自带的Python 2.7(路径一般是/usr/bin/python),重新安装Engine测试,排除brew Python的问题:
- 先卸载当前的Matlab Engine:
pip uninstall matlabengine - 确认当前用的是系统Python:
which python # 输出应该是/usr/bin/python - 重新安装Matlab Engine:
cd "/Applications/MATLAB_R20XXx.app/extern/engines/python" /usr/bin/python setup.py install - 然后测试启动命令:
import matlab.engine matlab.engine.start_matlab()
4. 检查权限和系统完整性
- 右键点击Matlab图标,选择「显示包内容」,进入
bin/maci64目录,检查里面的库文件权限是不是rwxr-xr-x,要是权限不对,用chmod命令调整一下。 - 打开系统自带的「磁盘工具」,用「急救」功能修复磁盘权限和系统文件,有时候系统文件损坏也会导致这种奇怪的段错误。
内容的提问来源于stack exchange,提问作者Dzung Nguyen
相关产品推荐
相关产品推荐

