Better way of handling missing dependency

I had a piece of code running in a celery task that would simply fail with returncode 1 and no other description if the keystoneclient dependency didn't exist.  The traceback came from an entirely different library that was in the middle and didn't contain any useful information at all.  If an exception had been raised, I would've easily spotted the message telling me to install the missing dependency.

It was a major pain to debug this missing dependency, I would much rather have gotten an ImportError exception instead.  It would be preferable to catch that exception here and re-raise it with custom text rather than do a sys.exit().