importing part of a module without executing the rest

krishna.000.k at gmail.com krishna.000.k at gmail.com
Fri Jun 13 23:52:49 CEST 2008


file1.py
----------
a = 20
from abc import *
print "Should this be printed when 'a'  is alone imported from this
module"

file2.py
----------
from file1 import a
print a

file2.py is used in a context where 'from abc import *' statement
doesn't make sense but it can make sense of (and requires) 'a'.
But it seems we can't import just a part of the module and expect the
rest to not be executed.
Executing python file2.py executes the 'from abc ...' and the print
statement following it in file1.py.

Can't I just import 'a' into this name scope without touching the rest
of the statements in the module (file1 in this case). If so, what the
rationale behind such logic in the module 'import' mechanism of
python?
Of course, the option of using if __name__ == '__main__' in file1.py
for statements following 'a = 20' is not useful in my case as I need
all statements in file1 to be exectued when imported by someone else
(say file3.py)

Don't I have any solution other than packaging those parts in file1.py
(a = 20 and the rest of the statements) into different modules?



More information about the Python-list mailing list