diff options
| -rw-r--r-- | setuptools/build_meta_legacy.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/setuptools/build_meta_legacy.py b/setuptools/build_meta_legacy.py index 7eed41f1..03492da9 100644 --- a/setuptools/build_meta_legacy.py +++ b/setuptools/build_meta_legacy.py @@ -6,6 +6,7 @@ bridge between the old packaging mechanism and the new packaging mechanism, and will eventually be removed. """ +import os import sys from setuptools.build_meta import _BuildMetaBackend @@ -25,14 +26,21 @@ class _BuildMetaLegacyBackend(_BuildMetaBackend): # In order to maintain compatibility with scripts assuming that # the setup.py script is in a directory on the PYTHONPATH, inject # '' into sys.path. (pypa/setuptools#1642) - sys_path = list(sys.path) # Save the old path - if '' not in sys.path: - sys.path.insert(0, '') - - super(_BuildMetaLegacyBackend, - self).run_setup(setup_script=setup_script) - - sys.path = sys_path # Restore the old path + sys_path = list(sys.path) # Save the original path + + try: + if '' not in sys.path: + sys.path.insert(0, '') + + super(_BuildMetaLegacyBackend, + self).run_setup(setup_script=setup_script) + finally: + # While PEP 517 frontends should be calling each hook in a fresh + # subprocess according to the standard (and thus it should not be + # strictly necessary to restore the old sys.path), we'll restore + # the original path so that the path manipulation does not persist + # within the hook after run_setup is called. + sys.path[:] = sys_path _BACKEND = _BuildMetaLegacyBackend() |
