【问题标题】:Can't install OpenCV3 on Anaconda3 python3.6 on macOS无法在 macOS 上的 Anaconda3 python3.6 上安装 OpenCV3
【发布时间】:2017-06-11 22:51:47
【问题描述】:

我正在尝试在 macOS 10.11.6 上的 Anaconda3 python 3.6 上安装 OpenCV 3.2.0,但我找不到方法。 我的 Anaconda3 安装了 python 3.5.2,但是如果我使用

创建一个新的虚拟环境
$ conda create -n myvenv python  
then it downloads and installs python 3.6 on the new myvenv. A simple search  
$ conda search opencv
opencv                       2.4.8                np17py27_2  defaults 

opencv3 没有结果

$ conda search opencv3
NoPackagesFoundError: Package missing in current osx-64 channels: 
  - opencv3

安装menpo opencv3 build会产生以下冲突:

$ conda install -c menpo opencv3
Fetching package metadata ...........
Solving package specifications: .
UnsatisfiableError: The following specifications were found to be in conflict:
  - opencv3 -> python 2.7* -> openssl 1.0.1*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

我尝试使用自制软件进行安装,但将其与 Anaconda3 python3 链接似乎很困难:

$ brew install eigen tbb
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/eigen-3.3.1.el_capitan.bottle.tar.gz
100.0%
==> Pouring eigen-3.3.1.el_capitan.bottle.tar.gz
????  /usr/local/Cellar/eigen/3.3.1: 486 files, 6.4M
==> Downloading https://homebrew.bintray.com/bottles/tbb-4.4-20161128.el_capitan.bottle.tar.gz
100.0%
==> Pouring tbb-4.4-20161128.el_capitan.bottle.tar.gz
==> Caveats
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
  mkdir -p /Users/<username>/.local/lib/python3.5/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/<username>/.local/lib/python3.5/site-packages/homebrew.pth
==> Summary
????  /usr/local/Cellar/tbb/4.4-20161128: 119 files, 1.9M

更多信息

$ conda info
Current conda install:
               platform : osx-64
          conda version : 4.3.8
       conda is private : False
      conda-env version : 4.3.8
    conda-build version : 2.0.2
         python version : 3.5.2.final.0
       requests version : 2.12.4
       root environment : /Users/<username>/anaconda3  (writable)
    default environment : /Users/<username>/anaconda3/envs/lesvenv
       envs directories : /Users/<username>/anaconda3/envs
          package cache : /Users/<username>/anaconda3/pkgs
           channel URLs : https://repo.continuum.io/pkgs/free/osx-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/osx-64
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/osx-64
                          https://repo.continuum.io/pkgs/pro/noarch
            config file : None
           offline mode : False
             user-agent : conda/4.3.8 requests/2.12.4 CPython/3.5.2 Darwin/15.6.0 OSX/10.11.6
                UID:GID : 502:20

而结尾列表是:

$ conda list
packages in environment at /Users/<username>/anaconda3/envs/lesvenv:
anaconda-client           1.6.0                    py36_0
clyent                    1.2.2                    py36_0
mkl                       2017.0.1                      0
numpy                     1.11.3                   py36_0
openssl                   1.0.2j                        0
pip                       9.0.1                    py36_1
python                    3.6.0                         0
python-dateutil           2.6.0                    py36_0
pytz                      2016.10                  py36_0
pyyaml                    3.12                     py36_0
readline                  6.2                           2
requests                  2.12.4                   py36_0
setuptools                27.2.0                   py36_0
six                       1.10.0                   py36_0
sqlite                    3.13.0                        0
tk                        8.5.18                        0
wheel                     0.29.0                   py36_0
xz                        5.2.2                         1
yaml                      0.1.6                         0
zlib                      1.2.8                         3

我的蟒蛇是:/Users/&lt;username&gt;/anaconda3/bin/anaconda
我的 python 3.5.2 是:/Users/&lt;username&gt;/anaconda3/bin/python
我的 conda myvenv python 3.6 是:/Users/&lt;username&gt;/anaconda3/envs/myvenv/bin/python

【问题讨论】:

    标签: python macos python-3.x opencv anaconda


    【解决方案1】:

    由于您使用的是较新版本的 python3,您可能必须自己根据配方构建 opencv,该配方可在 https://github.com/conda-forge/opencv-feedstock 获得

    另一种选择是在新环境中使用特定版本的 python3,方法是这样创建:

    (root) osx:Downloads nwani$ conda list | grep python
    python                    3.6.0                         0 
    (root) osx:Downloads nwani$ conda create -yn opencvtest python=3.5.2
    (root) osx:Downloads nwani$ source activate opencvtest
    (opencvtest) osx:Downloads nwani$ conda list | grep python
    python                    3.5.2                         0
    

    opencv 3.1.0 版本可在conda-forge 频道获得:

    (root) osx:Downloads nwani$ conda search -c conda-forge --spec 'opencv=3*'
    Fetching package metadata .........
    opencv                       3.1.0               np110py27_0  conda-forge     
                                 3.1.0               np110py34_0  conda-forge     
                                 3.1.0               np110py35_0  conda-forge     
                                 3.1.0               np111py27_0  conda-forge     
                                 3.1.0               np111py34_0  conda-forge     
                                 3.1.0               np111py35_0  conda-forge     
                                 3.1.0               np110py27_1  conda-forge     
                                 3.1.0               np110py34_1  conda-forge     
                                 3.1.0               np110py35_1  conda-forge     
                                 3.1.0               np111py27_1  conda-forge     
                                 3.1.0               np111py34_1  conda-forge     
                                 3.1.0               np111py35_1  conda-forge
    

    你可以这样安装:

    (opencvtest) osx:Downloads nwani$ conda install -y -c conda-forge opencv 
    (opencvtest) osx:Downloads nwani$ conda list | grep -e python -e opencv
    # packages in environment at /Users/nwani/Downloads/m3/envs/opencvtest:
    opencv                    3.1.0               np111py35_1    conda-forge
    python                    3.5.2                         0  
    

    【讨论】:

    • 谢谢,我设法在两个不同的环境中安装了 menpo 和 conda-forge opencv3。
    【解决方案2】:

    我发现接受的解决方案不适用于带有 anaconda 的 python 3.6。

    所以要手动安装 opencv 并且仍然可以使用 conda:

    $ cd ~
    $ git clone https://github.com/opencv/opencv
    $ git clone https://github.com/opencv/opencv_contrib
    $ cd ~/opencv
    $ mkdir build
    $ cd build
    $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D PYTHON3_LIBRARY=/Users/yourusername/anaconda3/lib/libpython3.6m.dylib \
        -D PYTHON3_INCLUDE_DIR=/Users/yourusername/anaconda3/include/python3.6m \
        -D PYTHON_DEFAULT_EXECUTABLE=/Users/yourusername/anaconda3/bin/python3 \
        -D PYTHON_PACKAGES_PATH=/Users/yourusername/anaconda3/lib/python3.6/site-packages \
        -D INSTALL_C_EXAMPLES=OFF \
        -D INSTALL_PYTHON_EXAMPLES=ON \
        -D BUILD_EXAMPLES=ON \
        -D BUILD_opencv_python3=ON \
        -D BUILD_opencv_python2=OFF \
        -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..
    $ make -j4
    $ make install
    

    此时安装应该很顺利。但是,如果你去终端,你仍然会得到:

    $ python
    import cv2
    ImportError: No module named cv2
    

    所以现在重命名这个文件

    $ cd ~/opencv/lib/python3.6/site-packages
    $ mv cv2.cpython-36m-darwin.so cv2.so
    

    并将其复制到此位置

    $ cp cv2.so /Users/yourusername/anaconda3/lib/python3.6/site-packages
    

    现在它应该可以工作了。

    $ python
    import cv2
    cv2.__version__
    '3.2.0-dev'
    

    【讨论】:

    • 你如何将它添加到 conda 包列表中,因为一旦他们更新它,人们希望它保持更新。
    • 澄清这是对那些需要 python 3.6 的临时修复。更新是在下载适当的 git 更改后重复上述步骤。
    【解决方案3】:

    我在 Win10 上安装了 anaconda3,当我用 conda 安装 opencv3 时遇到了同样的错误: conda install -c menpo opencv3

    搜索了一段时间,我在google groups here 上看到了这个问题和另一个类似的问题。不知何故,我设法在 python35 虚拟环境中安装了 opencv3,它也可以在 Mac OS 上运行。

    conda create --name python35 python=3.5
    activate python35
    conda install -c menpo opencv3
    

    之后,重新启动 Anaconda3 Navigator 并选择 python35 环境。

    在 Spyder 中进行测试:

    import cv2
    print(cv2.__version__)
    3.1.0
    

    【讨论】:

      【解决方案4】:

      此答案现已过时(除非出于某种原因您想使用旧版本的 OpenCV)- 请参阅 this answer

      上述正确答案对我不起作用。

      最终降低了 python 的版本,直到这个问题得到解决。

      conda install python=3.5 conda install -c menpo opencv3

      我知道这不是永久修复,但这对我有用,您无需做太多事情就可以留在 conda 环境中。

      此问题目前在此处引用:https://github.com/conda/conda/issues/2448

      希望这会有所帮助!

      【讨论】:

        【解决方案5】:

        更新:Conda 现在有一个用于 Python 3.6 的预构建 OpenCV 包!

        直接的解决方案是在基础安装中执行以下操作

        conda install -c menpo opencv3
        

        以前,这些包是针对 Python 3.5 构建的,所以我曾经用 @VivekPatani's alternative 解决这个问题。

        目前,conda menpo 的存储库已为 Python 3.6 版本预构建了 OpenCV 版本。因此,没有必要降级到 3.5 或从源代码构建 OpenCV。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-03
          • 1970-01-01
          • 2021-06-14
          • 2017-05-17
          • 2020-04-17
          • 2017-12-22
          • 2021-12-28
          • 2020-02-26
          相关资源
          最近更新 更多