diff --git a/changelog/63350.fixed b/changelog/63350.fixed new file mode 100644 index 00000000000..a544d15d1e4 --- /dev/null +++ b/changelog/63350.fixed @@ -0,0 +1 @@ +Import StrictVersion and LooseVersion from setuptools.distutils.verison or setuptools._distutils.version, if first not available diff --git a/salt/utils/pkg/win.py b/salt/utils/pkg/win.py index 9e8c4894ced..5ed397931ec 100644 --- a/salt/utils/pkg/win.py +++ b/salt/utils/pkg/win.py @@ -75,9 +75,14 @@ except ImportError: try: from salt.utils.versions import LooseVersion except ImportError: - from setuptools._distutils.version import ( - LooseVersion, # pylint: disable=blacklisted-module - ) + try: + from setuptools.distutils.version import ( + LooseVersion, # pylint: disable=blacklisted-module + ) + except ImportError: + from setuptools._distutils.version import ( + LooseVersion, # pylint: disable=blacklisted-module + ) # pylint: disable=too-many-instance-attributes diff --git a/salt/utils/versions.py b/salt/utils/versions.py index 8cbff8eaeb2..76b0f58fb05 100644 --- a/salt/utils/versions.py +++ b/salt/utils/versions.py @@ -18,8 +18,32 @@ import numbers import sys import warnings -from setuptools._distutils.version import LooseVersion as _LooseVersion -from setuptools._distutils.version import StrictVersion as _StrictVersion +log = logging.getLogger(__name__) + +try: + from setuptools.distutils.version import LooseVersion as _LooseVersion +except ImportError: + log.debug( + "unable to import LooseVersion from setuptools.distutils.version, will attempt setuptools._distutils.version" + ) + try: + from setuptools._distutils.version import LooseVersion as _LooseVersion + except: + log.debug("unable to import LooseVersion from setuptools._distutils.version") + raise ImportError() + +try: + from setuptools.distutils.version import StrictVersion as _StrictVersion +except ImportError: + log.debug( + "unable to import StrictVersion from setuptools.distutils.version, will attempt setuptools._distutils.version" + ) + try: + from setuptools._distutils.version import StrictVersion as _StrictVersion + except: + log.debug("unable to import StrictVersion from setuptools._distutils.version") + raise ImportError() + # pylint: enable=blacklisted-module import salt.version @@ -27,9 +51,6 @@ import salt.version # pylint: disable=blacklisted-module -log = logging.getLogger(__name__) - - class StrictVersion(_StrictVersion): def parse(self, vstring): _StrictVersion.parse(self, vstring)