Commit be7a0a31 authored by Jason R. Coombs's avatar Jason R. Coombs

Bypass .pth loader when distutils is loaded from pip. Workaround for pypa/pip#8761.

parent 4837f218
......@@ -3,6 +3,7 @@ import os
import re
import importlib
import warnings
import inspect
is_pypy = '__pypy__' in sys.builtin_module_names
......@@ -66,7 +67,7 @@ def do_override():
class DistutilsMetaFinder:
def find_spec(self, fullname, path, target=None):
if path is not None or fullname != "distutils":
if path is not None or fullname != "distutils" or self._bypass():
return None
return self.get_distutils_spec()
......@@ -84,6 +85,16 @@ class DistutilsMetaFinder:
return importlib.util.spec_from_loader('distutils', DistutilsLoader())
def _bypass(self):
"""
Suppress the import of distutils from setuptools when running under pip.
See pypa/pip#8761 for rationale.
"""
return any(
level.frame.f_globals['__name__'].startswith('pip.')
for level in inspect.stack(context=False)
)
DISTUTILS_FINDER = DistutilsMetaFinder()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment