Conditional based on whether or not a module is being used
Chris Rebert
clp2 at rebertia.com
Fri Mar 5 15:17:58 EST 2010
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() ?
> else:
> 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.
#foobar.py
try:
import foo
except ImportError:
FOO_PRESENT = False
else:
FOO_PRESENT = True
if FOO_PRESENT:
def foobar():
return foo.foo() + 'bar'
else:
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.
Cheers,
Chris
--
http://blog.rebertia.com
More information about the Python-list
mailing list