diff --git a/_distutils_hack/__init__.py b/_distutils_hack/__init__.py index ab462f95086..0108d854828 100644 --- a/_distutils_hack/__init__.py +++ b/_distutils_hack/__init__.py @@ -136,11 +136,36 @@ def spec_for_pip(self): """ if self.pip_imported_during_build(): return - if self.is_get_pip(): - return clear_distutils() self.spec_for_distutils = lambda: None + def spec_for_setuptools(self): + """ + get-pip imports setuptools solely for the purpose of + determining if it's installed. In this case, provide + a stubbed spec to represent setuptools being present + without invoking any behavior. + + Workaround for pypa/get-pip#137. + """ + if not self.is_get_pip(): + return + + import importlib + + class StubbedLoader(importlib.abc.Loader): + + def create_module(self, spec): + import types + return types.ModuleType('setuptools') + + def exec_module(self, module): + pass + + return importlib.util.spec_from_loader( + 'setuptools', StubbedLoader(), + ) + @classmethod def pip_imported_during_build(cls): """