Index: tools/cr/cr/loader.py |
diff --git a/tools/cr/cr/loader.py b/tools/cr/cr/loader.py |
index 21cb6f5f91bf8f8514c866e65f48a95e10eec265..b0bbb9f27616d336896c149ae5d163d5be5c4eee 100644 |
--- a/tools/cr/cr/loader.py |
+++ b/tools/cr/cr/loader.py |
@@ -46,6 +46,16 @@ def _Import(name): |
return import_module(name, None) |
+def _TryImport(name): |
+ """Try to import a module or package if it is not already imported.""" |
+ try: |
+ return _Import(name) |
+ except ImportError: |
+ if cr.context.verbose: |
+ print 'Warning: Failed to load module', name |
+ return None |
+ |
+ |
def _ScanModule(module): |
"""Runs all the scan_hooks for a module.""" |
scanner_tags = getattr(module, _MODULE_SCANNED_TAG, None) |
@@ -76,12 +86,14 @@ def _ScanPackage(package): |
packages.append(name) |
elif basename.endswith('.py') and not basename.startswith('_'): |
name = '.'.join([package.__name__, basename[:-3]]) |
- module = _Import(name) |
- _ScanModule(module) |
- modules.append(module) |
+ module = _TryImport(name) |
+ if module: |
+ _ScanModule(module) |
+ modules.append(module) |
for name in packages: |
- child = _Import(name) |
- modules.extend(_ScanPackage(child)) |
+ child = _TryImport(name) |
+ if child: |
+ modules.extend(_ScanPackage(child)) |
return modules |