diff options
author | William Deegan <bill@baddogconsulting.com> | 2016-05-19 02:58:51 (GMT) |
---|---|---|
committer | William Deegan <bill@baddogconsulting.com> | 2016-05-19 02:58:51 (GMT) |
commit | 7d7012b21a1434ab03cead57e4b8926c8b5ef153 (patch) | |
tree | 25e9431823fff5fbb692bf108c14b99676d3699d /src | |
parent | 839045dc79c4a02d971bad84265d08474c20d098 (diff) | |
download | SCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.zip SCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.tar.gz SCons-7d7012b21a1434ab03cead57e4b8926c8b5ef153.tar.bz2 |
fix for module loading to us importlib instead of imp (which no longer works in pyton3)
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/SCons/Tool/__init__.py | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index 4cd242b..87ebb98 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -38,11 +38,13 @@ tool definition. __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import imp +import importlib import sys import re import os import shutil + import SCons.Builder import SCons.Errors import SCons.Node.FS @@ -114,30 +116,56 @@ class Tool(object): sys.path = self.toolpath + sys.path try: + # Try site_tools first + return importlib.import_module(self.name) + except ImportError as e: + # Then try modules in main distribution + return importlib.import_module('SCons.Tool.'+self.name) + except ImportError as e: + if str(e) != "No module named %s" % self.name: + raise SCons.Errors.EnvironmentError(e) try: - file, path, desc = imp.find_module(self.name, self.toolpath) - try: - return imp.load_module(self.name, file, path, desc) - finally: - if file: - file.close() - except ImportError as e: - if str(e)!="No module named %s"%self.name: - raise SCons.Errors.EnvironmentError(e) - try: - import zipimport - except ImportError: - pass - else: - for aPath in self.toolpath: - try: - importer = zipimport.zipimporter(aPath) - return importer.load_module(self.name) - except ImportError as e: - pass + import zipimport + except ImportError: + pass + else: + for aPath in self.toolpath: + try: + importer = zipimport.zipimporter(aPath) + return importer.load_module(self.name) + except ImportError as e: + pass + finally: sys.path = oldpythonpath + # old code + # try: + # try: + # file, path, desc = imp.find_module(self.name, self.toolpath) + # try: + # return imp.load_module(self.name, file, path, desc) + # + # finally: + # if file: + # file.close() + # except ImportError as e: + # if str(e)!="No module named %s"%self.name: + # raise SCons.Errors.EnvironmentError(e) + # try: + # import zipimport + # except ImportError: + # pass + # else: + # for aPath in self.toolpath: + # try: + # importer = zipimport.zipimporter(aPath) + # return importer.load_module(self.name) + # except ImportError as e: + # pass + # finally: + # sys.path = oldpythonpath + full_name = 'SCons.Tool.' + self.name try: return sys.modules[full_name] |