首页 > 解决方案 > setup.py 通过 conda (conda-forge opencv) 安装了 cv2 依赖项

问题描述

我正在尝试在一个包中收集 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我的condaopencv吗?

该包具有以下结构:

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)

标签: pythonopencvpipcondasetup.py

解决方案


而不是使用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)

推荐阅读