Throw a useful error in the log when FileBrowser fails to load because of missing pywin32

This is a quick hack so that anyone else who runs this from source doesn't have to spend
the time I spent tracking down why directory.list failed silently.

There are two options that are much cleaner that come to mind:

- Subclass ImportException so as to differentiate missing requirements from
  parse errors etc.
- Provide a method for plugins to list their requirements, so that
  the loader can be the one to use imp.find_module().

Using imp.find_module() seems wise, either way.
This commit is contained in:
Michael J. Cohen
2012-04-03 20:35:25 -04:00
parent ee4e91d318
commit e99cf6757e
2 changed files with 16 additions and 3 deletions
+7 -2
View File
@@ -51,8 +51,13 @@ class Loader(object):
did_save += self.loadSettings(m, module_name, save = False)
self.loadPlugins(m, plugin.get('name'))
except ImportError:
log.debug('Import error, remove the empty folder: %s' % plugin.get('module'))
except ImportError as e:
# todo:: subclass ImportError for missing requirements.
if (e.message.lower().startswith("missing")):
log.error(e.message)
pass
# todo:: this needs to be more descriptive.
log.error('Import error, remove the empty folder: %s' % plugin.get('module'))
except:
log.error('Can\'t import %s: %s' % (module_name, traceback.format_exc()))