Improve error reporting

We need to defer raising our exception because it could hide an
ImportError. It'd be nice not to use traceback.print_stack and raise an
exception with the correct traceback, but six.reraise doesn't show the
whole traceback.