diff -r d7f6391954cf Lib/packaging/util.py --- a/Lib/packaging/util.py Sat Aug 20 14:52:04 2011 +0200 +++ b/Lib/packaging/util.py Sat Aug 20 15:57:22 2011 +0200 @@ -634,24 +634,35 @@ parts = name.split('.') cursor = len(parts) module_name = parts[:cursor] - + last_error = None + last_error_module_path = None while cursor > 0: try: ret = __import__('.'.join(module_name)) break - except ImportError: + except ImportError as ext: + last_error = ext + args = [] + if root is not None: + args.append(root) + args += module_name + last_error_module_path = '%s.py' % os.path.join(*args) if cursor == 0: raise cursor -= 1 module_name = parts[:cursor] ret = '' - + else: + last_error = None + last_error_module_path = None for part in parts[1:]: try: ret = getattr(ret, part) except AttributeError as exc: + if last_error is not None \ + and os.path.isfile(last_error_module_path): + raise last_error raise ImportError(exc) - return ret