vor einiger Zeit hatte ich einmal nach dynamischen imports gefragt, bzw. wie auch immer der Fachausdruck heißen mag. Die von mir verwendete Lösung war dann "exec foo in bar" welche ich hier fand: http://www.python-forum.de/viewtopic.ph ... 56#p189656
Nun das Problem ist jetzt, nachdem ich auf Python 2.7.2 umgestiegen bin (von 2.7), dass Namen die ich in diesem Fall auf Modulebene definiere, auf Funktionsebene nicht "immer" gültig sind. Das heißt, es kann vorkommen dass ein Name ganz plötzlich "None" ist.
Kleines Beispiel: (..das nur das Verhalten darstellt. Funktionieren tut es nämlich..)
Code: Alles auswählen
from types import ModuleType
code = """import os
def print_os():
print os"""
module = ModuleType('exectest')
exec code in module.__dict__
module.print_os()
>>> None
Außerdem gefällt mir das nicht so recht, als "Lösung" die Importe auf Funktionsebene durchzuführen.