Sandro Dentella wrote: > The structure of my package: > > python/ > `-- dbg/ > |-- __init__.py > `-- lib > |-- __init__.py > |-- debug.py > `-- gtk_dbg.py > > my sys.path includes 'python' and I wanted that the content of debug.py was > simply included by: 'import dbg', so I wrote dbg/__init__.py as follows: > > import os > Dir = os.path.dirname(__file__) > __path__ = [os.path.join(Dir, 'lib')] > from debug import *
What you probably want in python/dbg/__init__.py to get values is: from dbg.lib.debug import * > BUT, if I set some variables they are not correctly seen: > import dbg > dbg.DBG = 1 > function test included in debug.py raises NameError: > def test(): > print DBG > NameError: global name 'DBG' is not defined` > > What's happening? DBG seems to be set, as shown by dir(dbg)... any hints? You misunderstand modules and python variables. Each module has a dictionary associating the names of its globals and their current values. After: import dbg.lib.debug, dbg.lib.gtk_dbg you have four modules: dbg # Corresponds to python/dbg/__init__.py dbg.lib # Corresponds to python/dbg/lib/__init__.py dbg.lib.debug # Corresponds to python/dbg/lib/debug.py dbg.lib.gtk_dbg # Corresponds to python/dbg/lib/gtk_dbg.py Each has its own globals. after: dbg.DBG = 1 the dbg module's global dictionary contains an entry mapping 'DBG' to 1 after: dbg.DBG = 1+2 the dbg module's global dictionary contains an entry mapping 'DBG' to 3 In no case will an assignment to a global in dbg cause an assignment to anything in dbg.lib.debug. The "from dbg.lib.debug import *" statement can be seen as a module import followed by a fancy multiple assignment, where module dbg.lib.debug is first imported, then its globals are assigned to globals of the same names in module dbg. --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list