How to get two modules loaded into the same namespace?
r.vanwees at chello.nl
r.vanwees at chello.nl
Thu Nov 8 11:06:40 EST 2001
I am trying to build a rule engine. I have two Python modules:
RuleEngine.py and utilities.py.
I want to keep the engine and the utility functions separated for
reasons of maintainiability and cleannes.
I am running into a few problems:
1) In RuleEngine.py I have defined a global, DEBUG_PRINT_LEVEL, which
allows me to steer the amount of debug info I get at runtime
(curently somewhere between 'nothing' and 'an awful lot').
When I try the following in RuleEngine.py:
global DEBUG_PRINT_LEVEL
DEBUG_PRINT_LEVEL = 0
from utilities import *
class RuleEngine:
someUtilityFuncThatReferencesDEBUG_PRINT_LEVEL()
I get a NameError on DEBUG_PRINT_LEVEL (see stack trace below):
File "D:\Dev\PyCharGen\utilities.py", line 120, in calcLevel
if DEBUG_PRINT_LEVEL >= 4:
NameError: global name 'DEBUG_PRINT_LEVEL' is not defined
Process terminated with exit code 0
As far as I understand the
docs, the 'from x import *' syntax should import stuff into the
current namespace, but apparently this does not hold for globals.
2) Several functions in utilities.py refer back to functions in
RuleEngine.py. They also return a NameError (see stacktrace below
from an actual debug log)
File "D:\Dev\PyCharGen\utilities.py", line 157, in calcSpells
statLevel = find(stat, 'base') + find(stat, 'bonus')
NameError: global name 'find' is not defined
Process terminated with exit code 0
Again, it seems that the two modules are not in the same namespace.
Both python 2.1.1 and 2.2beta show this behavior.
Does anyone know a solution (other than putting the utility functions
in RuleEngine.py) to this problem? I must admit that I got lost at
the Python namespace rules before...
Kind regards,
Rob van Wees
More information about the Python-list
mailing list