packaging: Add the project directory to sys.path to support local setup hooks.
Original patch by Vinay Sajip on #11637.
diff --git a/Lib/packaging/config.py b/Lib/packaging/config.py
index 21bbcf8..43263f7 100644
--- a/Lib/packaging/config.py
+++ b/Lib/packaging/config.py
@@ -134,15 +134,20 @@
if 'setup_hooks' in content['global']:
setup_hooks = split_multiline(content['global']['setup_hooks'])
- for line in setup_hooks:
- try:
- hook = resolve_name(line)
- except ImportError as e:
- logger.warning('cannot find setup hook: %s', e.args[0])
- else:
- self.setup_hooks.append(hook)
-
- self.run_hooks(content)
+ # add project directory to sys.path, to allow hooks to be
+ # distributed with the project
+ sys.path.insert(0, cfg_directory)
+ try:
+ for line in setup_hooks:
+ try:
+ hook = resolve_name(line)
+ except ImportError as e:
+ logger.warning('cannot find setup hook: %s', e.args[0])
+ else:
+ self.setup_hooks.append(hook)
+ self.run_hooks(content)
+ finally:
+ sys.path.pop(0)
metadata = self.dist.metadata