double import protection - how to ?

Peter Otten __peter__ at web.de
Sat Nov 29 11:02:25 EST 2008


Helmut Jarausch wrote:

> Peter Otten wrote:
>> Helmut Jarausch wrote:
>> 
>>> I have a module which gets imported at several different places
>>> not all of which are under my control.
>>>
>>> How can I achieve that  all/some statements within that module
>>> get executed only at the very first import?
>> 
>> What you describe is Python's default behaviour. A module is executed
>> once and then cached in sys.modules. The second import is then just a
>> cache lookup.
>> 
>> This may only fail if a module is imported under different names,
>> typically
>> when you have directory  in sys.path that is part of a package, or when
>> you import the main script.
>> 
>> Peter
> 
> Thanks Steven, thanks Peter.
> 
> Then it's a problem with a problem with a webserver written in Python
> (Karrigell-3.0) and probably related to multi-threading (the statements in
> my module get definitely executed more than once).

Maybe you have the reload_modules* option switched on? That would defeat
Python's caching in order to ease development.

(*) see http://karrigell.sourceforge.net/en/configuration.htm

Peter




More information about the Python-list mailing list