exec mit komplett neuem Namensraum
Verfasst: Montag 23. April 2012, 16:09
Hallo,
da ich Schwierigkeiten habe das Problem in einen Text zu verfassen, hier ein bisschen Code:Ich möchte aber quasi einen komplett neuen Namensraum, sodass /usr/lib/python3.2/site-packages am Ende noch in sys.path ist und nur für den ausgeführten Code entfernt wird.
Brauchen tue ich das, weil ich diese Idee ein bisschen ausbauen möchte, jedoch möchte ich nicht, dass sich etwas im Hauptprogramm verändern lässt, außer ich übergebe es explizit als Globale-Variable an exec.
Ich hoffe Ihr könnt mir da weiterhelfen oder ist das überhaupt unmöglich, ohne einen neuen Interpreter-Prozess zu starten?
Viele Grüße
Maxi
da ich Schwierigkeiten habe das Problem in einen Text zu verfassen, hier ein bisschen Code:
Code: Alles auswählen
import sys
print(sys.path)
CODE = '''import sys
sys.path.remove('/usr/lib/python3.2/site-packages')
'''
exec(CODE, {}, {})
print(sys.path)
Code: Alles auswählen
... '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload', '/usr/lib/python3.2/site-packages']
... '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload']
Brauchen tue ich das, weil ich diese Idee ein bisschen ausbauen möchte, jedoch möchte ich nicht, dass sich etwas im Hauptprogramm verändern lässt, außer ich übergebe es explizit als Globale-Variable an exec.
Ich hoffe Ihr könnt mir da weiterhelfen oder ist das überhaupt unmöglich, ohne einen neuen Interpreter-Prozess zu starten?
Viele Grüße
Maxi