aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_distutils_importer/__init__.py32
-rw-r--r--_distutils_importer/distutils-shim-package/distutils/__init__.py3
-rwxr-xr-xsetup.py1
3 files changed, 27 insertions, 9 deletions
diff --git a/_distutils_importer/__init__.py b/_distutils_importer/__init__.py
index 498c4ac1..323ae203 100644
--- a/_distutils_importer/__init__.py
+++ b/_distutils_importer/__init__.py
@@ -1,15 +1,37 @@
import sys
-_HERE = os.path.dirname(__file__)
-NEW_DISTUTILS_LOCATION = os.path.join(_HERE, 'distutils-shim-package')
+
+class DistutilsMetaFinder:
+ def find_spec(self, fullname, path, target=None):
+ if path is not None or fullname != "distutils":
+ return None
+
+ return self.get_distutils_spec()
+
+ def get_distutils_spec(self):
+ import importlib
+
+ class DistutilsLoader(importlib.util.abc.Loader):
+
+ def create_module(self, spec):
+ return importlib.import_module('._distutils', 'setuptools')
+
+ def exec_module(self, module):
+ pass
+
+ return importlib.util.spec_from_loader('distutils', DistutilsLoader())
+
+
+DISTUTILS_FINDER = DistutilsMetaFinder()
+
def add_shim():
- if NEW_DISTUTILS_LOCATION not in sys.path:
- sys.path.insert(0, NEW_DISTUTILS_LOCATION)
+ sys.meta_path.insert(0, DISTUTILS_FINDER)
+
def remove_shim():
try:
- sys.path.remove(NEW_DISTUTILS_LOCATION)
+ sys.path.remove(DISTUTILS_FINDER)
except ValueError:
pass
diff --git a/_distutils_importer/distutils-shim-package/distutils/__init__.py b/_distutils_importer/distutils-shim-package/distutils/__init__.py
deleted file mode 100644
index de098c72..00000000
--- a/_distutils_importer/distutils-shim-package/distutils/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-import setuptools.distutils_patch
-
-from distutils import *
diff --git a/setup.py b/setup.py
index daab3e87..cba37d3e 100755
--- a/setup.py
+++ b/setup.py
@@ -50,7 +50,6 @@ def _gen_console_scripts():
package_data = dict(
setuptools=['script (dev).tmpl', 'script.tmpl', 'site-patch.py'],
- _distutils_importer=['distutils-shim-package/distutils/__init__.py'],
)
force_windows_specific_files = (