Skip to content

Commit 2feb180

Browse files
committed
Use import hook instead of sys.path manipulation
1 parent 0efa4d3 commit 2feb180

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

_distutils_importer/__init__.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
11
import sys
22

3-
_HERE = os.path.dirname(__file__)
4-
NEW_DISTUTILS_LOCATION = os.path.join(_HERE, 'distutils-shim-package')
3+
4+
class DistutilsMetaFinder:
5+
def find_spec(self, fullname, path, target=None):
6+
if path is not None or fullname != "distutils":
7+
return None
8+
9+
return self.get_distutils_spec()
10+
11+
def get_distutils_spec(self):
12+
import importlib
13+
14+
class DistutilsLoader(importlib.util.abc.Loader):
15+
16+
def create_module(self, spec):
17+
return importlib.import_module('._distutils', 'setuptools')
18+
19+
def exec_module(self, module):
20+
pass
21+
22+
return importlib.util.spec_from_loader('distutils', DistutilsLoader())
23+
24+
25+
DISTUTILS_FINDER = DistutilsMetaFinder()
26+
527

628
def add_shim():
7-
if NEW_DISTUTILS_LOCATION not in sys.path:
8-
sys.path.insert(0, NEW_DISTUTILS_LOCATION)
29+
sys.meta_path.insert(0, DISTUTILS_FINDER)
30+
931

1032
def remove_shim():
1133
try:
12-
sys.path.remove(NEW_DISTUTILS_LOCATION)
34+
sys.path.remove(DISTUTILS_FINDER)
1335
except ValueError:
1436
pass
1537

_distutils_importer/distutils-shim-package/distutils/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ def _gen_console_scripts():
5050

5151
package_data = dict(
5252
setuptools=['script (dev).tmpl', 'script.tmpl', 'site-patch.py'],
53-
_distutils_importer=['distutils-shim-package/distutils/__init__.py'],
5453
)
5554

5655
force_windows_specific_files = (

0 commit comments

Comments
 (0)