Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cv2 graphics / headless extras to setup.py #1195

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Erotemic
Copy link

This PR is related to a similar one for mmcv: open-mmlab/mmcv#2775

I've copy/pasted the body of that PR but s/mmcv/mmengine/g

Motivation

The mmengine library requires the cv2 module, but there are two flavors of the module that different users may want in different circumstances, either opencv-python or opencv-python-headless. These libraries are incompatible with each other, and if you incorrectly install the wrong one it becomes a pain to clean them up and install the right one.

This PR introduces a way for the user to specify which one of these they want at install time.

Modification

I've added two new files in requirements. cv2-headless.txt and cv2-graphics.txt which specify reasonable minimum versions of opencv based on the version of Python the user is on. These are registered as new extras_require options. So the new usage would be either:

pip install mmengine[cv2-headless]

OR

pip install mmengine[cv2-graphics]

This means you no longer have to install cv2 before / after mmengine, and you can be sure you have the right one for your use case based on the install command you use. I've been using this construct in kwimage and other cv repos for a while now with good success.

This also makes a modification to the parse_requirements function in setup.py. I was the original author of this construct and I figured I would update it to the lastest version I'm using in my cookiecutter repo while I was here. I don't think it matters to parse the new extra reqs, but it does support more cases that could exist in the future. That could be reverted if needbe.

Notes

I think to finialize this PR there will need to be documentation modification and maybe this section:

try:
    # OpenCV installed via conda.
    import cv2  # NOQA: F401
    major, minor, *rest = cv2.__version__.split('.')
    if int(major) < 3:
        raise RuntimeError(
            f'OpenCV >=3 is required but {cv2.__version__} is installed')
except ImportError:
    # If first not installed install second package
    CHOOSE_INSTALL_REQUIRES = [('opencv-python-headless>=3',
                                'opencv-python>=3')]
    for main, secondary in CHOOSE_INSTALL_REQUIRES:
        install_requires.append(choose_requirement(main, secondary))

In the setup.py needs to change? Looking for maintainer feedback about this detail.

@CLAassistant
Copy link

CLAassistant commented Jun 10, 2023

CLA assistant check
All committers have signed the CLA.

Comment on lines +1 to +6
opencv-python>=4.5.5.64 ; python_version < '4.0' and python_version >= '3.11' # Python 3.11+
opencv-python>=4.5.4.58 ; python_version < '3.11' and python_version >= '3.10' # Python 3.10
opencv-python>=3.4.15.55 ; python_version < '3.10' and python_version >= '3.9' # Python 3.9
opencv-python>=3.4.15.55 ; python_version < '3.9' and python_version >= '3.8' # Python 3.8
opencv-python>=3.4.15.55 ; python_version < '3.8' and python_version >= '3.7' # Python 3.7
opencv-python>=3.4.13.47 ; python_version < '3.7' and python_version >= '3.6' # Python 3.6
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Erotemic , thanks for your contribution. Is it necessary to set the lower limit of opencv-python version according to different python versions?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a good question. Having it this way allows older Python's to use older versions of the library that aren't available for newer Python's. The benefit of specifying a minimum version for each python is that a minimum working version is know, but older systems are allowed to update to latest.

The downside is that these are a pain to write. But, I have a tool to help write these: xdev. If you pip install xdev[all] and run: xdev availpkg opencv-python you will see something like:

image

And if the above link dies, the text is:

package_name = 'opencv-python'
abi_tag       abi3                                   cp310                                    cp36m                                   cp37m                                            cp38                                          cp39                                       
os             win macosx   linux  win macosx  linux   win macosx        linux    win   linux   win        macosx  linux              linux macosx    win   linux  win macosx  linux  linux      macosx  win          linux macosx macosx   linux  win macosx    win  linux     
arch        x86_64 x86_64 aarch64 i686  arm64 x86_64  i686 x86_64 arm64 x86_64 x86_64 aarch64  i686 x86_64 x86_64 x86_64 aarch64 i686  i686 x86_64 x86_64 aarch64 i686  arm64 x86_64 x86_64 i686 x86_64 i686 x86_64 aarch64  arm64 x86_64 aarch64 i686  arm64 x86_64 x86_64 i686
pkg_version                                                                                                                                                                                                                                                                     
3.4.0.14       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.1.15       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.10.37      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.11.41      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.11.43      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.11.45      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    1.0     NaN  1.0    NaN    1.0    1.0  1.0
3.4.13.47      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  1.0   1.0    1.0    1.0     1.0  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     1.0    NaN    1.0     1.0  1.0    NaN    1.0    1.0  1.0
3.4.14.51      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  NaN   NaN    1.0    1.0     NaN  1.0    NaN    1.0    1.0  NaN    1.0  1.0    1.0     NaN    NaN    1.0     NaN  1.0    NaN    1.0    1.0  NaN
3.4.14.53      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    NaN    1.0    1.0  NaN    1.0  1.0    1.0     1.0    NaN    1.0     1.0  1.0    NaN    1.0    1.0  NaN
3.4.15.55      NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     1.0    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN
3.4.16.57      NaN    NaN     NaN  NaN    NaN    NaN   1.0    1.0   1.0    1.0    1.0     NaN   1.0    1.0    1.0    1.0     NaN  NaN   NaN    1.0    1.0     NaN  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     NaN    1.0    1.0     NaN  1.0    1.0    1.0    1.0  NaN
3.4.16.59      NaN    NaN     NaN  NaN    NaN    NaN   1.0    1.0   1.0    1.0    1.0     1.0   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     1.0    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN
3.4.17.61      1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.17.63      1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.18.65      1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.2.17       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.3.18       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.4.19       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.5.20       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.6.27       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.7.28       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.8.29       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
3.4.9.33       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.0.0.21       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.0.1.24       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.1.0.25       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.1.1.26       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.1.2.30       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.2.0.32       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.2.0.34       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.3.0.36       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.3.0.38       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.4.0.40       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.4.0.42       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.4.0.44       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.4.0.46       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  1.0   1.0    1.0    1.0     NaN  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     NaN    NaN    1.0     NaN  1.0    NaN    1.0    1.0  1.0
4.5.1.48       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  1.0   1.0    1.0    1.0     1.0  1.0    NaN    1.0    1.0  1.0    1.0  1.0    1.0     1.0    NaN    1.0     1.0  1.0    NaN    1.0    1.0  1.0
4.5.2.52       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     NaN  NaN   NaN    1.0    1.0     NaN  1.0    NaN    1.0    1.0  NaN    1.0  1.0    1.0     NaN    NaN    1.0     NaN  1.0    NaN    1.0    1.0  NaN
4.5.2.54       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    NaN    1.0    1.0  NaN    1.0  1.0    1.0     1.0    NaN    1.0     1.0  1.0    NaN    1.0    1.0  NaN
4.5.3.56       NaN    NaN     NaN  NaN    NaN    NaN   NaN    NaN   NaN    NaN    NaN     NaN   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     1.0    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN
4.5.4.58       NaN    NaN     NaN  NaN    NaN    NaN   1.0    1.0   1.0    1.0    1.0     1.0   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     1.0    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN
4.5.4.60       NaN    NaN     NaN  NaN    NaN    NaN   1.0    1.0   1.0    1.0    1.0     1.0   1.0    1.0    1.0    1.0     1.0  NaN   NaN    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN    1.0  1.0    1.0     1.0    1.0    1.0     1.0  1.0    1.0    1.0    1.0  NaN
4.5.5.62       1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.5.5.64       1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.6.0.66       1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.7.0.68       1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
4.7.0.72       1.0    1.0     1.0  1.0    1.0    1.0   NaN    NaN   NaN    NaN    NaN     NaN   NaN    NaN    NaN    NaN     NaN  NaN   NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN    NaN  NaN    NaN     NaN    NaN    NaN     NaN  NaN    NaN    NaN    NaN  NaN
chosen_minmax_for = {
    '2.7': {'best': '3.4.0.14', 'max': '4.2.0.32', 'min': '3.4.0.14'},
    '3.4': {'best': '3.4.0.14', 'max': '4.1.1.26', 'min': '3.4.0.14'},
    '3.5': {'best': '3.4.0.14', 'max': '4.4.0.42', 'min': '3.4.0.14'},
    '3.6': {'best': '3.4.0.14', 'max': '4.7.0.72', 'min': '3.4.0.14'},
    '3.7': {'best': '3.4.2.17', 'max': '4.3.0.38', 'min': '3.4.10.37'},
    '3.8': {'best': '3.4.8.29', 'max': '4.3.0.38', 'min': '3.4.10.37'},
}
opencv-python>=3.4.17.61  ; python_version < '4.0'  and python_version >= '3.11'    # Python 3.11+
opencv-python>=3.4.16.57  ; python_version < '3.11' and python_version >= '3.10'    # Python 3.10
opencv-python>=3.4.11.45  ; python_version < '3.10' and python_version >= '3.9'     # Python 3.9
opencv-python>=3.4.8.29  ; python_version < '3.9'  and python_version >= '3.8'     # Python 3.8
opencv-python>=3.4.2.17  ; python_version < '3.8'  and python_version >= '3.7'     # Python 3.7
opencv-python>=3.4.0.14  ; python_version < '3.7'  and python_version >= '3.6'     # Python 3.6
opencv-python>=3.4.0.14  ; python_version < '3.6'  and python_version >= '3.5'     # Python 3.5
opencv-python>=3.4.0.14  ; python_version < '3.5'  and python_version >= '3.4'     # Python 3.4
opencv-python>=3.4.0.14  ; python_version < '3.4'  and python_version >= '2.7'     # Python 2.7

Which shows you a table of which versions of a package are available for which versions of Python (and os / hardware). The final output is a suggestion of minimum versions for existing versions of Python (and a hypothetical 4.0). These aren't always perfect, but I start from here and tweak minimums (see xdev availpkg --help). This is how I maintain my requirements/*.txt and I think it has advantages over alternatives.

If you'd like, I can work towards "finishing" the upgrade so you will be able to do things like

pip install mmcv[cv2-graphics]
pip install mmcv[cv2-headless]
pip install mmcv[all-strict,cv2-headless-strict]
pip install mmcv[runtime-strict,cv2-graphics-strict]

The "-strict" variants will have their versions pinned to the minimum, but without that suffix you get the "loose" behavior, which removes the upper bound on the versions (and allows for compatability / identify when another package breaks you).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] Improve opencv normal-vs-headless requirements
3 participants