Mar*_*ett 5 python macos opencv
错误:
环境:
到目前为止我尝试过的大约 30 件事:
Error 1:
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: numpy.core.multiarray failed to import
Try 1:
import numpy.core.multiarray before import cv2
Error 2:
File "/Users/mbennett/Library/Python/3.7/lib/python/site-packages/numpy/__init__.py", line 142, in <module>
from . import core
File "/Users/mbennett/Library/Python/3.7/lib/python/site-packages/numpy/core/__init__.py", line 47, in <module>
raise ImportError(msg)
...
Original error was:
dlopen(/Users/mbennett/Library/Python/3.7/lib/python/site-packages/numpy/core/_multiarray_umath.cpython-37m-darwin.so, 2): Symbol not found: ___addtf3
Referenced from: /Users/mbennett/Library/Python/3.7/lib/python/site-packages/numpy/core/../.dylibs/libquadmath.0.dylib
Expected in: /usr/lib/libSystem.B.dylib
in /Users/mbennett/Library/Python/3.7/lib/python/site-packages/numpy/core/../.dylibs/libquadmath.0.dylib
...
Importing the numpy c-extensions failed.
- x Try uninstalling and reinstalling numpy.
- If you have already done that, then:
x 1. Check that you expected to use Python3.7 from "/usr/local/opt/python/bin/python3.7",
and that you have no directories in your PATH or PYTHONPATH that can
interfere with the Python and numpy version "1.17.4" you're trying to use.
2. If (1) looks fine, you can open a new issue at
https://github.com/numpy/numpy/issues. Please include details on:
- how you installed Python
- how you installed numpy
- your operating system
- whether or not you have multiple versions of Python installed
- if you built from source, your compiler versions and ideally a build log
- If you're working with a numpy git repository, try `git clean -xdf`
(removes all files not under version control) and rebuild numpy.
--
Trying to change symlinks
Python links in 2 places: /usr/bin AND /usr/local/bin
In /usr/bin, AS ROOT, cannot remove or change python link
rm python
rm: python: Operation not permitted
# wtf, whoami -> root
--
Next try: Change order of path, put /usr/local/bin BEFORE /usr/bin, then try changing symlinks there
or try changing symlink first
(links changed, stopped here)
--
Try 1b: installing again now that pip is really pip3
No
# pip now = pip3
pip uninstall opencv-contrib-python
pip install opencv-contrib-python
OK: Successfully installed opencv-contrib-python-4.1.2.30
No, same errors
Try 1c:
No
pip uninstall opencv-contrib-python
pip install -U opencv-contrib-python
Try 1d:
No, same version numpy-1.18.1
pip uninstall numpy
pip install numpy -U
Try 1e:
No
python -c "import numpy;print numpy.version;print numpy.file";
^-- and added ()'s to print
Try 1f:
No
# put /usr/local/lib before /usr/lib
export DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
Try 1g:
No
pip install --upgrade --force-reinstall --no-cache-dir numpy
Try 1h:
No
pip install --upgrade --force-reinstall --no-cache-dir scipy
Successfully uninstalled numpy-1.18.1
Found existing installation: scipy 1.3.3
Uninstalling scipy-1.3.3:
Successfully uninstalled scipy-1.3.3
Successfully installed numpy-1.18.1 scipy-1.4.1
Try 1i:
No
Try very old scipy
# conda uninstall scipy
# conda install scipy=0.15.0
pip uninstall scipy
X pip install scipy=0.15.0 # bad syntax
x pip install scipy==0.15.0
^-- LOTS of errors
Reintalling w default version it says:
Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.7/site-packages (from scipy) (1.18.1)
Installing collected packages: scipy
Successfully installed scipy-1.4.1
Try 1j:
No
Try rolling back scipy to 1.13.3
pip uninstall scipy
pip install scipy==1.13.3
^-- not a valid version...
Try 1k:
No
Try rolling back scipy to 1.4.0
(still uninstalled)
pip install scipy==1.4.0
Try 1l:
No
Try uninstalling the Homebrew version of numpy
# pip uninstall scipy
# brew update
# brew upgrade
brew uninstall numpy
Uninstalling /usr/local/Cellar/numpy/1.11.2... (474 files, 9.5MB)
Try 1m:
No (likely scipy is subset of numpy, vs other way around?)
Try uninstalling the Homebrew version of scipy
brew uninstall scipy
Error: No such keg: /usr/local/Cellar/scipy
Try 1n:
? Try installing blas?
? "___addtf3 which is a GCC software floating point routine provided by a gfortran"
^-- "libquadmath uses the ___addtf3 routine, rather than defines it"
Try installing gfortran
x pip install gfortran
brew install gfortran
Error:
Error: No available formula with the name "gfortran"
GNU Fortran is part of the GCC formula:
brew install gcc
Try 1o:
Install gcc:
brew install gcc
Error:
Error: gcc 6.2.0 is already installed
To upgrade to 9.2.0_3, run `brew upgrade gcc`.
,Then retry installing gfortran
, brew install gfortran
Try 1p:
No
brew upgrade gcc
brew install gfortran
Error: No available formula with the name "gfortran"
GNU Fortran is part of the GCC formula:
brew install gcc
# retest import
Try 1q:
No
Try installing clang4 or clang4-r
x brew install clang4
x brew install clang4-r
x brew install clang
--
X install-clang4.sh
--------------------
# Download binary
curl -O http://r.research.att.com/libs/clang-4.0.0-darwin15.6-Release.tar.gz
# Extract binary onto root directory
tar fvxz clang-4.0.0-darwin15.6-Release.tar.gz -C /
# Overwrite the ~/.R/Makevars
cat <<- EOF > ~/.R/Makevars
# The following statements are required to use the clang4 binary
CC=/usr/local/clang4/bin/clang
CXX=/usr/local/clang4/bin/clang++
CXX11=$CXX
CXX14=$CXX
CXX17=$CXX
CXX1X=$CXX
LDFLAGS=-L/usr/local/clang4/lib
# End clang4 inclusion statements
EOF
--
Try 1r:
x try the Sierra version of gfortran?
gfortran is part of GCC now, and Web says it's current
--
Try 1s:
No
Try overwriting python3 (links?)
cd /usr/local/Cellar/python
cp -r 3.7.5 3.7.5.bak
brew link --overwrite python3
Warning: Already linked: /usr/local/Cellar/python/3.7.5
To relink:
brew unlink python
brew link python
brew link --overwrite python
Try 1t:
X gfortran ... The missing symbol in libgcc isn't surprising
since you're trying to run code compiled with a 4.6 gfortran in a 4.2 runtime environment.
No, gfortran part of gcc, remember!
Try 1u:
No, same import error
try installing openblas
x pip install openblas
brew install openblas # ok
Try 1v:
No:
Try installing or building gdal2-python
brew install gdal2-python
Error: No formulae found in taps.
x brew reinstall --build-from-source gdal2-python
Try 1w:
No
Try fixing gcc?
cd /usr/local/lib
x chown -R mbennett gcc (already done)
brew link gcc
Warning: Already linked: /usr/local/Cellar/gcc/9.2.0_3
To relink:
brew unlink gcc # worked
brew link gcc # worked
But same error in python
Try 1x:
No, and now have different error
try installing older version of opencv 4x -> 3x
x pip install opencv-contrib-python==3.3.0.10
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python==3.3.0.10 (from versions: 3.4.2.16, 3.4.2.17, 3.4.3.18, 3.4.4.19, 3.4.5.20, 3.4.8.29, 4.0.0.21, 4.0.1.24, 4.1.0.25, 4.1.1.26, 4.1.2.30)
ERROR: No matching distribution found for opencv-contrib-python==3.3.0.10
pip list | grep opencv
opencv-contrib-python 4.1.2.30
pip install opencv-contrib-python==3.4.2.16
Different error:
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
# try latest version 3
pip install opencv-contrib-python==3.4.8.29
Different Error:
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/libpng16.16.dylib
Referenced from: /usr/local/lib/python3.7/site-packages/cv2/.dylibs/libfreetype.6.dylib
Reason: Incompatible library version: libfreetype.6.dylib requires version 54.0.0 or later, but libpng16.16.dylib provides version 43.0.0
# try first version of 4x
pip install opencv-contrib-python==4.0.0.21
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
# ok, back to latest
pip install opencv-contrib-python==4.1.2.30
import cv2
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/libpng16.16.dylib
Referenced from: /usr/local/lib/python3.7/site-packages/cv2/.dylibs/libfreetype.6.dylib
Reason: Incompatible library version: libfreetype.6.dylib requires version 54.0.0 or later, but libpng16.16.dylib provides version 43.0.0
Try 1y:
try upgrading libpng
pip uninstall libpng
pip uninstall libpng
WARNING: Skipping libpng as it is not installed.
pip install libpng
ERROR: Could not find a version that satisfies the requirement libpng (from versions: none)
ERROR: No matching distribution found for libpng
X brew update libpng
brew upgrade libpng # ok
python / import cv2
New Error:
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/libtiff.5.dylib
Referenced from: /usr/local/lib/python3.7/site-packages/cv2/.dylibs/liblept.5.dylib
Reason: Incompatible library version: liblept.5.dylib requires version 11.0.0 or later, but libTIFF.dylib provides version 8.0.0
Try 1z:
try upgrading libtiff
brew upgrade libtiff # ok
import cv2 -> New Error:
File "/usr/local/lib/python3.7/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: dlopen(/usr/local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-darwin.so, 2): Symbol not found: __cg_jpeg_resync_to_restart
Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /usr/local/lib/libJPEG.dylib
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
--
Try 1aa:
No
Try to fix Symbol not found: __cg_jpeg_resync_to_restart
cd /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources
sudo mv libJPEG.dylib libJPEG.dylib.bak
Error: mv: rename libJPEG.dylib to libJPEG.dylib.bak: Operation not permitted
sudo ln -sf libJPEG.dylib /usr/local/lib/libJPEG.dylib
sudo mv libPng.dylib libPng.dylib.bak
sudo ln -sf libPng.dylib /usr/local/lib/libPng.dylib
sudo mv libTIFF.dylib libTIFF.dylib.bak
sudo ln -sf libTIFF.dylib /usr/local/lib/libTIFF.dylib
sudo mv libGIF.dylib libGIF.dylib.bak
sudo ln -sf libGIF.dylib /usr/local/lib/libGIF.dylib
Post on Stack Overflow
Run Code Online (Sandbox Code Playgroud)
我同意这些评论,只需使用虚拟环境,不要干扰系统的 python。但我建议使用miniconda(原因:它很容易卸载,而不是 anaconda 的大小,不错的文档)。[编辑:我编辑了对我有用的更具可重复性的步骤,并解决了评论中的一些问题。]
# >>> conda init >>>
)配置(https://docs.conda.io/projects/conda/en/latest/user-guide/configuration/index.html)。矿:
$ conda config --set auto_activate_base False
$ conda config --set allow_softlinks False
$ conda config --set show_channel_urls True
$ conda config --add channels conda-forge
Run Code Online (Sandbox Code Playgroud)[在我推荐的原始答案中conda config --set pip_interop_enabled True
。现在我认为建议是错误的。因此,请忽略它(默认为 False)。]
现在发出这些命令(我假设是catalina的zshell)
$ source <your-path-to-miniconda3>/bin/activate
(base) $ conda update conda
(base) $ conda init zsh
Run Code Online (Sandbox Code Playgroud)
关闭并重新启动 shell 以使更改生效。
注意: 1) 仅使用基本环境conda update conda
2) 创建环境时指定 python 版本 3) 只要安装 python,您总是会得到 pip、wheels、setuptools 4) conda deactivate
5) 关于auto_activate_base
,如果您将其设置为 False(默认值为 True),请记住 conda python 路径仅在激活环境后设置。
创建并激活环境:
conda create -n my-env python=3.7
conda activate my-env
Run Code Online (Sandbox Code Playgroud)
甚至(对于来自 conda-forge 的 opencv 4.2,假设上述配置):
conda create -n my-opencv-env python=3.7 opencv=4.2
conda activate my-opencv-env
Run Code Online (Sandbox Code Playgroud)
另请注意:如果要在环境中安装软件包,请记住先激活环境,然后再激活conda install package-name
。
关于您在下面的评论中提到的 numpy 问题,请先检查 numpy 是否包含在创建环境时要安装的包中。然后运行一个文件,将其导入为 np 和print(np.__file__)
. (你不应该在你的 miniconda 环境之外有引用)。
更多信息请参见:https ://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html 。您可以使用 conda 或 pip 安装软件包(我更喜欢 conda)。
归档时间: |
|
查看次数: |
1650 次 |
最近记录: |