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 syssys.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 二进制文件

Azure 管道无法生成,因为它找不到类型或命名空间名称

无法在 Mac 上安装 Ruby gem libxslt-ruby,因为它找不到 libxml2

在 Nuke 导入 pandas 模块时遇到问题

无法在 python 3.6 中导入 cv2 OpenCV 2.4.13

为啥我不能从 VM 分离磁盘?它说这是因为它找不到存储。但是我已经删除了存储