Conditional based on whether or not a module is being used

Pete Emerson pemerson at gmail.com
Fri Mar 5 15:31:40 EST 2010


On Mar 5, 11:57 am, MRAB <pyt... at mrabarnett.plus.com> wrote:
> Pete Emerson 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.
>
> Look for its name in sys.modules, for example:
>
>      'foo' in sys.modules

Excellent, this is what I finally discovered, although I was looking
for 'foo' in sys.modules.keys(), which apparently isn't necessary.



More information about the Python-list mailing list