How to test if a module exists?

Chris Rebert clp2 at rebertia.com
Sat Nov 6 14:35:26 EDT 2010


On Sat, Nov 6, 2010 at 11:22 AM, Jon Dufresne <jon.dufresne at gmail.com> wrote:
> Hi,
>
> My python program has an extension system where the extension can have
> a optional magic python modules. Meaning if the extension module
> exists, the program will use it and if not, it will continue without
> the module. So my program tests if a module exists, if so use it,
> otherwise continue. This is how I originally did this (pseudo code):
>
>
> try:
>    import extension_magic_module
> except ImportError:
>    pass
> else:
>    handle_extension_magic_module()
>
>
> However, if the the extension module exists but throws an ImportError,
> due to a bug in the extension this idiom will mask the error and I
> will never see it. Later on in the program I will get unexpected
> behavior because the module never successfully imported. I want the
> program to fail if the extension module fails to import, but continue
> if the module doesn't exist. Is there a correct way to handle this?

Here's what I came up with:

try:
    import extension_magic_module
except ImportError as err:
    if err.message != "No module named extension_magic_module":
        raise err
else:
    handle_extension_magic_module()

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list