在Mac OS X上使用pip安装pyopencv

6

我正在尝试在OS X Mountain Lion中使用pip安装pyopencv,但导入setuptools失败。以下是我的操作。setuptools中的“Library”是什么?我以前没有见过这个。我已经通过homebrew和其他方式安装了opencv。在pyopencv的文档中,它没有解释如何使用pip进行安装,只有源代码安装。

(img2)appleparan@LiamMac src $ brew install cmake
Warning: cmake-2.8.11.2 already installed
(img2)appleparan@LiamMac src $ brew install cmake --upgrade
Warning: cmake-2.8.11.2 already installed
(img2)appleparan@LiamMac src $ brew install opencv
Warning: opencv-2.4.6.1 already installed
(img2)appleparan@LiamMac src $ brew install boost
Warning: boost-1.54.0 already installed
(img2)appleparan@LiamMac src $ pip install pyopencv
Downloading/unpacking pyopencv
  Could not find a version that satisfies the requirement pyopencv (from versions: 2.0.wr1.0.1-demo, 2.0.wr1.0.1, 2.0.wr1.1.0, 2.1.0.wr1.0.0, 2.1.0.wr1.0.1, 2.1.0.wr1.0.2, 2.1.0.wr1.1.0, 2.1.0.wr1.2.0, 2.1.0.wr1.2.0-demo, 2.1.0.wr1.2.0)
Cleaning up...
No distributions matching the version for pyopencv
Storing complete log in /Users/appleparan/.pip/pip.log
(img2)appleparan@LiamMac src $ pip install pyopencv==2.1.0.wr1.2.0
Downloading/unpacking pyopencv==2.1.0.wr1.2.0
  Downloading pyopencv-2.1.0.wr1.2.0.tar.gz (363kB): 363kB downloaded
  Running setup.py egg_info for package pyopencv
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/Users/appleparan/.virtualenvs/img2/build/pyopencv/setup.py", line 92, in <module>
        from setuptools import setup, find_packages, Extension, Library
    ImportError: cannot import name Library
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/Users/appleparan/.virtualenvs/img2/build/pyopencv/setup.py", line 92, in <module>

    from setuptools import setup, find_packages, Extension, Library

ImportError: cannot import name Library

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /Users/appleparan/.virtualenvs/img2/build/pyopencv
Storing complete log in /Users/appleparan/.pip/pip.log
(img2)appleparan@LiamMac src $ python --version
Python 2.7.5
(img2)appleparan@LiamMac src $ pip freeze
Pillow==2.1.0
distribute==0.7.3
matplotlib==1.3.0
nose==1.3.0
numpy==1.7.1
pyparsing==2.0.1
python-dateutil==2.1
scipy==0.12.0
six==1.4.1
stevedore==0.12
tornado==3.1.1
virtualenv==1.10.1
virtualenv-clone==0.2.4
virtualenvwrapper==4.1.1
wsgiref==0.1.2
(img2)appleparan@LiamMac src $

EDIT: 我发现setuptools源代码中有Library和Extension (https://bitbucket.org/pypa/setuptools/src/27df3c725f9696ba730456f3f444cc2fb5271d4b/setuptools/extension.py?at=default),但我不知道为什么它无法识别。
我的setuptools版本是1.1.6。
(img2)appleparan@LiamMac src $ pip install setuptools --upgrade
Requirement already up-to-date: setuptools in /Users/appleparan/.virtualenvs/img2/lib/python2.7/site-packages/setuptools-1.1.6-py2.7.egg
Cleaning up...
(img2)appleparan@LiamMac src $

安装最新版本的 setuptools,而不是 distribute - falsetru
我已经移除了distribute,但这并没有解决我的问题。 - Jongsu Liam Kim
你在移除 distribute 后安装了 setuptools 吗? - falsetru
是的,我卸载了它们两个并只安装了setuptools(使用https://dev59.com/O2s05IYBdhLWcg3wGuOd)。然后我再次尝试,但仍然失败了。 - Jongsu Liam Kim
3个回答

3
在最近的setuptools版本中,Libraryextension.py中。因此,pyopencv应该将Library导入为setuptools.extension.Library而不是setuptools.Library

那么...你是说要pip install extension,这样就可以解决问题了吗?还是在安装之前改变pyopencl的源代码?如果是后者...真的吗? - Slipp D. Thompson
这个问题已经过去很长时间了。我现在不再使用opencv,然而,pyopencv似乎没有得到维护,而且opencv本身支持python绑定。请参见此链接http://www.jeffreythompson.org/blog/2013/08/22/update-installing-opencv-on-mac-mountain-lion/(不确定是否适用于yosemite),那么尝试一下这种方法如何? - Jongsu Liam Kim

2

变更

from setuptools import setup, find_packages, Extension, Library

为了

from setuptools import *
from setuptools.extension import *

0

您可以打印python来运行Python解释器,然后在Python中打印以下内容:

import sys
sys.path

在输出中查找类似于/Library/Python/2.7/site-packages的行。 打印exit()以退出Python解释器。

在命令行中输入命令:cd /Library/Python/2.7/site-packages并使用ls命令列出文件。查找文件'cv.py'和'cv2.so'。它们应该在那里。然后参考~/.bash_profile文件,发出命令cat ~/.bash_profile以查找您的PYTHONPATH:应该有一行类似于export PYTHONPATH=/usr/local/lib/python2.7/site-packages。发出命令cd /usr/local/lib/python2.7/site-packages跳转到该文件夹。

现在,您可以通过以下命令为cv2.so和cv.py创建符号链接: sudo ln -s /usr/local/lib/python2.7/site-packages/cv.py /Library/Python/2.7/site-packages/cv.pysudo ln -s /usr/local/lib/python2.7/site-packages/cv2.so /Library/Python/2.7/site-packages/cv2.so

1
请考虑适当格式化代码或命令,以使您的答案更易读。感谢您来到SA。此外,请解释为什么您的解决方案有效。 - Felix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接