Conditional based on whether or not a module is being used
pemerson at gmail.com
Fri Mar 5 21:25:37 CET 2010
On Fri, Mar 5, 2010 at 12:17 PM, Chris Rebert <clp2 at rebertia.com> wrote:
> On 3/5/10, Pete Emerson <pemerson at gmail.com> wrote:
>> In a module, how do I create a conditional that will do something
>> based on whether or not another module has been loaded?
>> Suppose I have the following:
>> import foo
>> import foobar
>> print foo()
>> print foobar()
>> ########### foo.py
>> def foo:
>> return 'foo'
>> ########### foobar.py
>> def foobar:
>> if foo.has_been_loaded(): # This is not right!
>> return foo() + 'bar' # This might need to be foo.foo() ?
>> return 'bar'
>> If someone is using foo module, I want to take advantage of its
>> features and use it in foobar, otherwise, I want to do something else.
>> In other words, I don't want to create a dependency of foobar on foo.
>> My failed search for solving this makes me wonder if I'm approaching
>> this all wrong.
> Just try importing foo, and then catch the exception if it's not installed.
> import foo
> except ImportError:
> FOO_PRESENT = False
> FOO_PRESENT = True
> if FOO_PRESENT:
> def foobar():
> return foo.foo() + 'bar'
> def foobar():
> return 'bar'
> You could alternately do the `if FOO_PRESENT` check inside the
> function body rather than defining separate versions of the function.
Except I want to use the module only if the main program is using it
too, not just if it's available for use. I think that I found a way in
my follow-up post to my own message, but not sure it's the best way or
More information about the Python-list