diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2046,7 +2046,11 @@ def dispatch(args): external = [] for x in u.extensions(): if x[1]: - mod = imp.load_source(x[0], x[1]) + try: + mod = imp.load_source(x[0], x[1]) + except: + u.warn("*** failed to import extension %s\n" % x[1]) + continue else: def importh(name): mod = __import__(name) @@ -2054,7 +2058,12 @@ def dispatch(args): for comp in components[1:]: mod = getattr(mod, comp) return mod - mod = importh(x[0]) + try: + mod = importh(x[0]) + except: + u.warn("failed to import extension %s\n" % x[0]) + continue + external.append(mod) for x in external: cmdtable = getattr(x, 'cmdtable', {})