From: caremoli Date: Thu, 21 Oct 2010 13:21:42 +0000 (+0000) Subject: CCAR: small fix for import of modules such as matplotlib X-Git-Tag: V5_1_5rc1~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=044dc8addb222cf4f6f55a2cf474d877e1973845;p=modules%2Fkernel.git CCAR: small fix for import of modules such as matplotlib --- diff --git a/src/KERNEL_PY/import_hook.py b/src/KERNEL_PY/import_hook.py index 3d628ecab..d812d8f67 100755 --- a/src/KERNEL_PY/import_hook.py +++ b/src/KERNEL_PY/import_hook.py @@ -119,6 +119,7 @@ def import_module(partname, fqname, parent): """ Try to import module fqname It's parent is module parent and has name partname """ + #print "import_module",partname, fqname, parent try: m = sys.modules[fqname] except KeyError: @@ -129,6 +130,7 @@ def import_module(partname, fqname, parent): def ensure_fromlist(m, fromlist, recursive=0): """ Return the real modules list to be imported """ + #print "ensure_fromlist",m, fromlist, recursive l=[] for sub in fromlist: if sub == "*": @@ -139,11 +141,23 @@ def ensure_fromlist(m, fromlist, recursive=0): pass else: l.extend(ensure_fromlist(m, all, 1)) - elif hasattr(m,sub): - submod=getattr(m,sub) + else: + #try to find if sub is an attribute (eventually dotted) of m + components=sub.split('.') + has_submod=True + submod=m + for comp in components: + if hasattr(submod,comp): + submod=getattr(submod, comp) + else: + has_submod=False + break + + if has_submod: + #the attribute has been found if type(submod) == type(sys): l.append(("%s.%s" % (m.__name__, sub),submod)) - else: + else: subname="%s.%s" % (m.__name__, sub) submod = import_module(sub, subname, m) if not submod: