无法导入caffe - iPython找不到'普通'python找到的环境变量

时间:2015-10-22 10:38:53

标签: python caffe pycaffe

我在运行OS X 10.11 El Capitan的Mac上使用Anaconda python。

我正在尝试在iPython中使用pycaffe,但导入它(import caffe)失败并显示错误

ImportError: dlopen(/Users/.../Documents/caffe-master/python/caffe/_caffe.so, 2): Library not loaded: @rpath/libcudart.7.5.dylib
  Referenced from: /Users/.../Documents/caffe-master/python/caffe/_caffe.so
  Reason: image not found

虽然iPython无法导入caffe,但是在'普通'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 caffe
>>> caffe.Net
<class 'caffe._caffe.Net'>

我还应该提一下,我正在使用CUDA 7.5,虽然我看不到哪个版本的caffe(下载了zip),但它是在2015年9月17日从主分支机构完成的。

我为'普通'python执行的能够导入caffe的操作是将以下内容添加到〜/ .bash_profile

# added pycaffe path
export PYTHONPATH="/Users/.../Documents/caffe-master/python:$PYTHONPATH"

# needed to import pycaffe in python
export DYLD_FALLBACK_LIBRARY_PATH='/usr/local/cuda/lib:/anaconda/lib:/usr/local/lib:/usr/lib:/opt/intel/lib:/opt/intel/mkl/lib'

iPython正在阅读.bash_profile中设置的PYTHONPATH,因为如果ImportError: No module named caffe行已被注释,它将提供export PYTHONPATH=...。但由于某些原因,它找不到DYLD_FALLBACK_LIBRARY_PATH,这是普通的'python'。

关于可能出错的任何想法?

1 个答案:

答案 0 :(得分:0)

好的,事实证明,主要问题是由于El Capitan中称为SIP(系统完整性保护)的新功能,因此无法设置@model IEnumerable<MvcMovies.Models.Movie> @{ ViewBag.Title = "Search By Gen"; } <script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery-ui-1.8.20.js")" type="text/javascript"></script> <link href="@Url.Content( "~/content/themes/base/jquery-ui.css")" rel="Stylesheet" type="text/css" /> <script type="text/javascript"> $(document).ready( function () { var dropDownSelectedDefault = $("#TotalGen option:selected").text(); $("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelectedDefault }); //$("input#search").click( $("#TotalGen").change( function () { var dropDownSelected = $("#TotalGen option:selected").text(); $("#viewPlaceHolder").load("/Movie/SearchByGenGetResult", { gen: dropDownSelected }); } ); } ); </script> <h2>Search By Gen</h2> <div> @Html.DisplayName("Genere ") @Html.DropDownList("TotalGen") </div> <div id="viewPlaceHolder"></div> 。这个功能可以为Mac OSX上的根攻击提供额外的保护。

要禁用SIP:

  • 启动时按住cmd-R以恢复模式重新启动计算机 起来。
  • 打开终端窗口(在顶层菜单的“实用工具”下)。
  • 输入DYLD_FALLBACK_LIBRARY_PATH以关闭SIP(并csrutil disable将其重新打开)。
  • 在manu中从Apple符号重新启动计算机。

这解决了我的问题。有关详细信息:MacWorld article on SIPCaffe user mailing list