hat schon jemand seinen eigenen Importer gebastelt für module die nicht im filesystem liegen, und ist auf das "verhaltensproblem des import statements" gestoßen?
Mein problem ist, das das reguläre scheinbar nicht einfach "return sys.modules[name]" ausführt wenn bereits vorhanden.
Sprich wenn ich ein Modul mit der funktion stringimport importiert habe und irgendwo in einem anderen modul ein "import x" vorkommt, sucht er x im Filesystem (wo es natürlich nicht existiert).
Ich würde gern vermeiden die vielen submodule ändern zu müssen,
daher die Frage, wo vermerkt sich das import statement noch, was bereits importiert ist?
(Ziel: nach ausgeführten 'stringimport(..)' soll ein 'import ..' kein echtes neuimport des moduls versuchen sondern das bereits in sys.modules vorhandene zurückgeben)
Code: Alles auswählen
def stringimport(modulename, code):
if sys.modules.has_key(modulename):
return sys.modules[modulename]
m = sys.modules.setdefault(modulename, imp.new_module(modulename))
m.__file__ = modulename + '.py'
exec code in m.__dict__
return m