I want to replace settings.py
in my Django system with a module implemented as a directory settings
containing __init__.py
. This will try to import a module named after the server, thus allowing for per-server settings.
If I don't know the name of a module before I import it then I can't use the import
keyword but must instead use the __import__
function. But this does not add the contents of the module to the settings
module. I need the equivalent of from MACHINE_NAME import *
. Or I need a way to iterate over vars(m)
(where m
is the loaded module) and add them to the current namespace. But I can't work out how to refer to the current namespace in order to make the assignment. In other words, I can't use setattr(x, ..)
or modify x.__dict__
, because I don't know what to use for x
.
I can't think of much else to try now apart from using exec
. This seems a little feeble to me. Am I missing some aspect of Pythonic introspection that would allow me to manipulate the current scope while still in it?