summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2021-12-29 11:35:11 -0500
committerGitHub <noreply@github.com>2021-12-29 11:35:11 -0500
commit104f8b40ba36999b81d88470900f01c20654d3ce (patch)
tree155995772cd45b9ad365046a327e7e2dc327f3d4
parente401134914cea9fe9863b6f745716071a98ee611 (diff)
parent6eb6350caebbb36537722c7a0ec532b9ff98168f (diff)
downloadpython-setuptools-git-104f8b40ba36999b81d88470900f01c20654d3ce.tar.gz
Merge pull request #2962 from nitzmahone/setuptools_picky_shim
distutils shim should ignore setuptools on another path
-rw-r--r--_distutils_hack/__init__.py18
-rw-r--r--changelog.d/2962.misc.rst1
2 files changed, 13 insertions, 6 deletions
diff --git a/_distutils_hack/__init__.py b/_distutils_hack/__init__.py
index 0a8f0473..c0170d09 100644
--- a/_distutils_hack/__init__.py
+++ b/_distutils_hack/__init__.py
@@ -86,17 +86,23 @@ class DistutilsMetaFinder:
import importlib.abc
import importlib.util
- # In cases of path manipulation during sitecustomize,
- # Setuptools might actually not be present even though
- # the hook has been loaded. Allow the caller to fall
- # back to stdlib behavior. See #2980.
- if not importlib.util.find_spec('setuptools'):
+ try:
+ mod = importlib.import_module('setuptools._distutils')
+ except Exception:
+ # There are a couple of cases where setuptools._distutils
+ # may not be present:
+ # - An older Setuptools without a local distutils is
+ # taking precedence. Ref #2957.
+ # - Path manipulation during sitecustomize removes
+ # setuptools from the path but only after the hook
+ # has been loaded. Ref #2980.
+ # In either case, fall back to stdlib behavior.
return
class DistutilsLoader(importlib.abc.Loader):
def create_module(self, spec):
- return importlib.import_module('setuptools._distutils')
+ return mod
def exec_module(self, module):
pass
diff --git a/changelog.d/2962.misc.rst b/changelog.d/2962.misc.rst
new file mode 100644
index 00000000..5a553a77
--- /dev/null
+++ b/changelog.d/2962.misc.rst
@@ -0,0 +1 @@
+Avoid attempting to use local distutils when the presiding version of Setuptools on the path doesn't have one.