On 3/5/10, Pete Emerson <pemer...@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 -- http://mail.python.org/mailman/listinfo/python-list