2011-01-03 4 views
1

Das Imp-Modul in Google App Engine ist leer.
Gibt es also eine andere Möglichkeit zu tun, was die imp.load_module()-Funktion tut - nämlich ein Modul-Objekt aus einem Dateiobjekt zurückzugeben?Ersatzfunktionalität für imp.load_module() in Google App Engine?

(oder noch allgemein - auch eine Möglichkeit, ein Modul-Objekt aus jedem beliebigen Stück Code zu generieren (eingesandt von exec() oder etwas)?)

+0

Bitte wählen Sie die beste Antwort für jede Ihrer Fragen. –

+0

Sie sind beide gute Antworten :). – Abbafei

Antwort

1

Nun, können Sie versuchen:

>>> import types 
>>> foo = types.ModuleType('foo') 

Aber es wird offensichtlich leer sein, und Sie müssen zu „füllen“ es eine andere Art und Weise, einschließlich

>>> exec('bar=2', foo.__dict__) 
>>> foo.bar 
2 

Die große Frage ist, warum Sie das wünschen würde. Das Ausführen eines "zufälligen Stücks Code" ist im Allgemeinen eine sehr schlechte Idee. :-) Es ist ein Sicherheitsloch in jeder Situation, und wenn Sie irgendwie erlauben, dieses TTW zu bearbeiten, sind Sie nur fragen für jemanden, Ihre Website zu hacken.

0

Haben Sie sich __import__ angesehen? See here... Es gibt auch ein Modul zurück. Was waren deine Gründe für die Verwendung von imp?