Hi there, I have two scripts. The first "main.py" sets some variables and then imports another called "gen.py". The idea is to provide "main.py" that defines some paths, variables etc. without using Windows environment variables. Various other "hackers" will make additional Python scripts (subroutines) like "gen.py" that utilize variables set by the "main.py" and which "main.py" calls. I can do this with "subprocess" module by setting its env -variable but I try to avoid calling shell. How can I merge temporary the namespaces of the two modules?
----- example run STARTS --- c:\home\pekka>main.py imported module: <module 'gen' from 'c:\home\gen.py'> {'todir': 'c:\\'} Traceback (most recent call last): File "C:\home\pekka\main.py", line 16, in ? gencmd.run_gen() File "c:\home\gen.py", line 7, in run_gen print env_params # HOW MAKE THIS DICTIONARY FROM main.py VISIBLE NameError: global name 'env_params' is not defined ----- example run STOPS --- ---- main.py STARTS ---- import os, sys env_params = {} env_params['EDITOR'] = "foo" def import_libs(dir, script): """ Imports python script""" sys.path.insert(0,(os.path.normpath(dir))) module_name, ext = os.path.splitext(script) my_script = __import__(module_name) print "\nimported module: %s" % (my_script) del sys.path[0] return my_script if __name__ == "__main__": gencmd = import_libs("c:\home", "gen.py") gencmd.run_gen() ---main.py ENDS ----- ---- gen.py STARTS ---- # Store this script to directory c:\home" my_env_params ={} my_env_params['todir'] = "c:\\" def run_gen(): # Get commandline arguments print my_env_params print env_params # HOW MAKE THIS DICTIONARY FROM main.py VISIBLE if __name__ == "__main__": run_gen() ---gen.py ENDS ----- -pekka- -- http://mail.python.org/mailman/listinfo/python-list