python无法导入opencv,因为它找不到libjpeg.8.dylib
Posted
技术标签:
【中文标题】python无法导入opencv,因为它找不到libjpeg.8.dylib【英文标题】:python cannot import opencv because it can't find libjpeg.8.dylib 【发布时间】:2014-10-01 00:04:52 【问题描述】:尝试让 opencv for python 在 Mac OSX 上运行 - Mavericks 但在从 python 导入 cv 时不断获取 libjpeg.8.dylib 的图像
(最近从山狮更新)
这就是我所做的:
1.brew tap homebrew/science
2.brew install opencv
3.python
4.import cv
-得到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: dlopen(/usr/local/Cellar/opencv/2.4.9/lib/python2.7/site-packages/cv2.so, 2): Library not loaded: /usr/local/lib/libjpeg.8.dylib
Referenced from: /usr/local/Cellar/opencv/2.4.9/lib/libopencv_highgui.2.4.dylib
Reason: image not found
-
我查找了 libjpeg.8.dylib,并在
/usr/local/Cellar/jpeg/8d/lib/
中找到了它,这显然不是 libopencv_highgui.2.4.dylib 正在查找的位置。
我对 Mac OS 和自制软件有点陌生。谁能解释如何解决这个错误并让 opencv 运行?我有 Mac 预装的 python,它们是由 homebrew 安装的。
谢谢。
【问题讨论】:
【参考方案1】:对此的快速而肮脏的解决方案是在 /usr/local/lib 文件夹中创建一个指向 libjpeg.8.dylib 实际位置的符号链接,如下所示:
$ sudo ln -s /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/libjpeg.8.dylib
问题是 opencv 和 python 期望 libjpeg.8.dylib 位于 /usr/local/lib/ 但 homebrew 将它安装在 /usr/local/Cellar/ 中,因此出现烦人的错误。
【讨论】:
这是有效的。有没有“更好”的解决方案?更好是指不脏的东西。 你可以尝试修改python的搜索路径like this并做import sys
sys.path.append('/usr/local/Cellar/')
谢谢!在我看到这个答案之前,谷歌一直让我失望。
天哪,为什么开源软件总是这样。总是,没有一次事情按预期工作。【参考方案2】:
我使用 brew a 在我的 Mac 上安装 OpenCV,遇到了同样的问题,但它是使用 Xcode C++ 控制台应用程序。
不过,解决问题的另一种方法是将cp
文件复制到库位置。
cp /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/libjpeg.8.dylib
或者后者,我不建议这样做,只是说明另一种方法是使用将 mv
整个文件位置移动到 /usr/local/lib/ 目录中。
mv /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/
【讨论】:
【参考方案3】:刚刚遇到了与此类似的问题(在 python 中 import opencv
有一天为我工作,然后下一次它抛出了你报告的相同错误)并且这个解决方案对我有用:
升级你的自制opencv 例如:
brew upgrade opencv
(或者在我的情况下是brew upgrade opencv3
)
希望对你有帮助
【讨论】:
【参考方案4】:我对 macOS 上的 Pillow 库有类似的问题。 The solution proposed here 从源代码安装它对我有用。我必须将它安装到 /usr/local/
以便 Pillow 找到它。你需要命令行工具,这是第一行的目的:
xcode-select --install
curl -O -J -L http://www.ijg.org/files/jpegsrc.v8.tar.gz
tar xvfz jpeg*tar.gz # Unzip and untar what you downloaded
cd jpeg-8 # Change directory to wherever it unpacked to
./configure --prefix="/usr/local" # Configure with the necessary prefix
make
sudo make install
【讨论】:
以上是关于python无法导入opencv,因为它找不到libjpeg.8.dylib的主要内容,如果未能解决你的问题,请参考以下文章
pip 无法安装软件包,因为它找不到 swig2.0 二进制文件
无法在 Mac 上安装 Ruby gem libxslt-ruby,因为它找不到 libxml2