通过conda(conda-forge opencv)安装的具有cv2依赖项的setup.py

时间:2018-11-07 14:40:17

标签: python opencv pip conda setup.py

我正在尝试将Python代码收集在软件包gnn_pylib中,并将其安装在conda环境中。我的软件包将需要opencv,它已通过以下方式安装在conda环境中:

conda install -c conda-forge opencv

我可以正确运行cv2函数,并且可以成功使用cv2函数调用软件包中的函数:

import gnn_pylib
gnn_pylib.show()

但是当我尝试安装运行pip install -e .的软件包时 从gnn_pylib目录中,出现以下错误:

Collecting cv2 (from gnn-pylib==0.1)
  Could not find a version that satisfies the requirement cv2 (from gnn-pylib==0.1) (from versions: )
No matching distribution found for cv2 (from gnn-pylib==0.1)

有什么我想念的吗?我应该以某种方式通知pip但我的conda opencv吗?

该软件包具有以下结构:

gnn_pylib/
    gnn_pylib/
        __init__.py
        show.py
    setup.py

__init__.py如下:

from .show import foo

show.py如下:

import cv2
import numpy as np

def foo():
    cv2.imshow("random", np.random.rand(10,10))
    cv2.waitKey()
    return

setup.py如下:

from setuptools import setup

setup(name='gnn_pylib',
      version='0.1',
      description='General purpose python library',
      url='http://github.com/whatever/gnn_pylib',
      author='whatever',
      author_email='whatever@gmail.com',
      license='MIT',
      packages=['gnn_pylib'],
      install_requires=[
            'numpy',
            'cv2',
      ],
      zip_safe=False)

2 个答案:

答案 0 :(得分:1)

不要使用cv2作为必需的软件包名称,而是使用opencv-python,因为这是PyPI提供的OpenCV绑定软件包的名称。因此,您的setup.py文件将看起来像这样(与上述相同,但OpenCV绑定程序包要求有不同的条目):

from setuptools import setup

setup(name='gnn_pylib',
      version='0.1',
      description='General purpose python library',
      url='http://github.com/whatever/gnn_pylib',
      author='whatever',
      author_email='whatever@gmail.com',
      license='MIT',
      packages=['gnn_pylib'],
      install_requires=[
            'numpy',
            'opencv-python',
      ],
      zip_safe=False)

答案 1 :(得分:0)

@James Adams回答cv2的特定情况,用更兼容的opencv-python代替。

但是,如果您仍然想从conda安装依赖项,请考虑制作一个conda软件包。

看到带有答案的类似问题:

setup.py with dependecies installed by conda (not pip)

Use 'conda install' instead of 'pip install' for setup.py packages

我无法找到详细的分步说明和示例答案。但希望能有所帮助。