python3 在 macOS 安裝opencv-python失敗的解法

Posted in :

在 macOS 裡,安裝opencv-python 或 opencv-python-headless 時,一直裝不上,stackover 上找不到解法。

錯誤訊息:

ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects

從執行的畫面來看,應該是 pip 挑戰幫我的 macOS 10.15-x86_64 build 出一個執行檔,但失敗了。


I had the same problem and i did this,

pip install --upgrade pip setuptools wheel

then install opencv again,

pip install opencv-python

this not worked for me!

我最後解決了,解法:
https://cloud.tencent.com/developer/article/2221107

首先,先決定要安裝的是 opencv-python 或 opencv-python-headless , 這2個是獨立的套件,互不影響,如果你跟我一樣,是要跑 ddddocr, 那就是只要安裝後面的 opencv-python-headless 就可以了。

請點擊下面的網頁來下載 opencv-python-headless :
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python-headless/

如果是要下載 opencv-python-headless 就把上面的網址的 -headless 移除就可以了。

紅色框框,是我下載的 .whl 檔。

cp37 指最低要求是 python 3.7 ,

macosx_10_13 指最低要求是 macOS 10.13 版,由於我目前電腦環境是用 macOS 10.15 版,所以不能下載 10_16 的版本。

使用 intel CPU 請下載 x86_64.

使用 arm CPU 請用 arm64 的版本。

下載好後使用 pip3 install + .whl 檔, 就可以完成安裝:

上圖我用的是 python 3.10 的 Framework, 再另外安裝 opencv-python-headless, 是成功了。


我刪除python, 降低版本為 python 3.8 之後,只裝 opencv-python-headless 會顯示下面的錯誤訊息:

File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cv2/init.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cv2/cv2.abi3.so, 2): Symbol not found: _VTRegisterSupplementalVideoDecoderIfAvailable
Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cv2/.dylibs/libavcodec.59.37.100.dylib (which was built for Mac OS X 11.0)
Expected in: /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cv2/.dylibs/libavcodec.59.37.100.dylib

挑戰,到下面目錄,把沒有 -headless 的版本也下載並安裝:
https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/

結果,錯誤訊息也一樣。

先手動地刪掉有問題的目錄:/python3.8/site-packages/cv2/

重新再用 pip -m install + .whl 檔。結果還是一樣。

應該是那個檔案有問題,所以再往前下載更舊一點的版本:
opencv-python-headless-4.6.0.66-cp36-abi3-macosx_10_15_x86_64.whl

OK, 搞定!果然是 opencv-python-headless-4.7 那個版本有問題,雖然是寫 macosx_10_13, 但實際是build macosx_11_0

然後,只需要安裝 -headless 的 .whl 就可以讓 ddddocr 成功 OCR了。


為了要可以使用 nodriver, nodriver 最少要 python 3.9 我只好再把 python 3.8 刪掉,版本提升到 python 3.10.11 版。opencv 的部人分,執行指令:

pip3 install opencv_python_headless-4.6.0.66-cp36-abi3-macosx_10_15_x86_64.whl

就搞定了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *