From: Isaku Yamahata <[email protected]> ryu-manager ryu/topology/dumper.py ryu/services/vrrp/dumper.py results in loading ryu.topology.dumper twice. ryu/services/vrrp/dumper.py is not loaded. And also don't populate sys.path multiple times with same path.
Signed-off-by: Isaku Yamahata <[email protected]> Signed-off-by: YAMAMOTO Takashi <[email protected]> --- ryu/utils.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/ryu/utils.py b/ryu/utils.py index dd22084..435ce03 100644 --- a/ryu/utils.py +++ b/ryu/utils.py @@ -39,17 +39,61 @@ import re LOG = logging.getLogger('ryu.utils') +def _abspath(path): + if path == '': + path = '.' + return os.path.abspath(path) + + +def _split_modname(modpath): + sys_path = [_abspath(path) for path in sys.path] + modname = os.path.basename(modpath) + dirname = os.path.dirname(modpath) + while True: + if dirname in sys_path: + break + if not os.path.exists(os.path.join(dirname, '__init__.py')): + break + + basename = os.path.basename(dirname) + if basename: + old_dirname = dirname + dirname = os.path.dirname(dirname) + if old_dirname == dirname: + break + if modname: + modname = basename + '.' + modname + else: + modname = basename + else: + break + + return dirname, modname + + +def _import(modname): + __import__(modname) + return sys.modules[modname] + + def import_module(modname): try: - __import__(modname) - except: - sys.path.append(os.path.dirname(os.path.abspath(modname))) - name = os.path.basename(modname) - if name.endswith('.py'): - name = name[:-3] - __import__(name) - return sys.modules[name] - return sys.modules[modname] + return _import(modname) + except ImportError: + pass + + if modname.endswith('.py'): + modname = modname[:-3] + try: + return _import(modname) + except ImportError: + pass + + modname = os.path.abspath(modname) + dirname, name = _split_modname(modname) + if dirname not in [_abspath(path) for path in sys.path]: + sys.path.append(dirname) + return _import(name) def round_up(x, y): -- 1.8.1.5 ------------------------------------------------------------------------------ Get your SQL database under version control now! Version control is standard for application code, but databases havent caught up. So what steps can you take to put your SQL databases under version control? Why should you start doing it? Read more to find out. http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
