Path: blob/main/python_environment_check.py
1244 views
import sys1from distutils.version import LooseVersion23if LooseVersion(sys.version) < LooseVersion('3.8'):4print('[FAIL] We recommend Python 3.8 or newer but'5' found version %s' % (sys.version))6else:7print('[OK] Your Python version is %s' % (sys.version))8910def get_packages(pkgs):11versions = []12for p in pkgs:13try:14imported = __import__(p)15try:16versions.append(imported.__version__)17except AttributeError:18try:19versions.append(imported.version)20except AttributeError:21try:22versions.append(imported.version_info)23except AttributeError:24versions.append('0.0')25except ImportError:26print(f'[FAIL]: {p} is not installed and/or cannot be imported.')27versions.append('N/A')28return versions293031def check_packages(d):3233versions = get_packages(d.keys())3435for (pkg_name, suggested_ver), actual_ver in zip(d.items(), versions):36if actual_ver == 'N/A':37continue38actual_ver, suggested_ver = LooseVersion(actual_ver), LooseVersion(suggested_ver)39if pkg_name == "matplotlib" and actual_ver == LooseVersion("3.8"):40print(f'[FAIL] {pkg_name} {actual_ver}, please upgrade to {suggested_ver} >= matplotlib > 3.8')41elif actual_ver < suggested_ver:42print(f'[FAIL] {pkg_name} {actual_ver}, please upgrade to >= {suggested_ver}')43else:44print(f'[OK] {pkg_name} {actual_ver}')45464748if __name__ == '__main__':49d = {50'numpy': '1.21.2',51'scipy': '1.7.0',52'matplotlib': '3.4.3',53'sklearn': '1.0',54'pandas': '1.3.2'55}56check_packages(d)575859