From 3bdd27c4e2a056528cb93ce60a90c08a758f12c7 Mon Sep 17 00:00:00 2001
From: liukuikun <24622904+Harold-lkk@users.noreply.github.com>
Date: Wed, 9 Mar 2022 22:11:05 +0800
Subject: [PATCH] [Fix] add required lib for vis (#111)

* add required lib for vis

* fix comment
---
 requirements/runtime.txt |  1 +
 setup.py                 | 32 +++++++++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/requirements/runtime.txt b/requirements/runtime.txt
index 831e8508..56b1fdd6 100644
--- a/requirements/runtime.txt
+++ b/requirements/runtime.txt
@@ -1,4 +1,5 @@
 addict
+matplotlib
 numpy
 pyyaml
 regex;sys_platform=='win32'
diff --git a/setup.py b/setup.py
index b219283a..20a3584b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,8 @@
+import re
 from setuptools import find_packages, setup  # type: ignore
 
+from pkg_resources import DistributionNotFound, get_distribution
+
 
 def readme():
     with open('README.md', encoding='utf-8') as f:
@@ -10,6 +13,18 @@ def readme():
 version_file = 'mmengine/version.py'
 
 
+def choose_requirement(primary, secondary):
+    """If some version of primary requirement installed, return primary, else
+    return secondary."""
+    try:
+        name = re.split(r'[!<>=]', primary)[0]
+        get_distribution(name)
+    except DistributionNotFound:
+        return secondary
+
+    return str(primary)
+
+
 def get_version():
     with open(version_file, 'r') as f:
         exec(compile(f.read(), version_file, 'exec'))
@@ -92,6 +107,21 @@ def parse_requirements(fname='requirements/runtime.txt', with_version=True):
     return packages
 
 
+install_requires = parse_requirements()
+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))
+
 setup(
     name='mmengine',
     version=get_version(),
@@ -104,7 +134,7 @@ setup(
     packages=find_packages(),
     include_package_data=True,
     python_requires='>=3.6',
-    install_requires=parse_requirements('requirements/runtime.txt'),
+    install_requires=install_requires,
     extras_require={
         'all': parse_requirements('requirements.txt'),
         'tests': parse_requirements('requirements/tests.txt'),
-- 
GitLab