Mac OS 下 import *** 产生Segementation Fault 11 的解决方法

import *** 后产生Segementation Fault 11通常都是因为*.dylib、*.so这些库中链接的python dylib版本,与当前使用的python环境不匹配造成的.

用otool -L 工具可以查看*.dylib、*.so中所链接的库地址及版本。
举例子:
我用sudo pip install dlib, 然后import dlib 后很郁闷地出现了Segementation Fault 11。
果断查看dlib.so所链接的python lib版本
>>>otool -L /Users/me/anaconda2/lib/python2.7/site-packages/dlib/dlib.so
/Users/me/anaconda2/lib/python2.7/site-packages/dlib/dlib.so:
@rpath/dlib.so (compatibility version 0.0.0, current version 0.0.0)
/usr/local/opt/boost-python/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
……………………………………
发现果然是系统默认的libpython2.7.dylib,而我当前的python环境是anaconda的,这果断不行啊。所以执行以下命令。
sudo install_name_tool -change "libpython2.7.dylib" "/Users/me/anaconda2/lib/libpython2.7.dylib" /Users/me/anaconda2/lib/python2.7/site-packages/dlib/dlib.so
再次查看
>>>otool -L /Users/me/anaconda2/lib/python2.7/site-packages/dlib/dlib.so
/Users/me/anaconda2/lib/python2.7/site-packages/dlib/dlib.so:
@rpath/dlib.so (compatibility version 0.0.0, current version 0.0.0)
/usr/local/opt/boost-python/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/Users/me/anaconda2/lib/libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
………………………………
发现库终于变过来了。

在import caffe时也遇到过这个错误,也用这个方法一并解决了。
详见http://blog.csdn.net/sunyiyou9/article/details/51658895

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值