[Python-de] wi kann ich import selber konstruieren

Georg Mischler schorsch at schorsch.com
Wed Oct 23 05:16:47 EDT 2002


Robert Rottermann wrote:

> Ich möchte von einer Datei lesen was für Packages zu importieren sind.
> Mein versuch:
>
> e = "import string"
> eval(e)
>
> produziert einen "Sintax error on line 1"
>
> wie kann ich das besser machen?


"Import string" ist eine Anweisung (statement). Eine solche kann
nur mit exec() ausgefuehrt werden:

>>> exec('import string')
>>> dir()
['__builtins__', '__doc__', '__name__', 'string']


Die Funktion eval() bearbeitet nur Ausdruecke (expressions),
welche sich von Anweisungen im wesentlichen dadurch unterscheiden,
dass sie einen Wert zurueckgeben:

>>> v = eval('1+2')
>>> v
3


Ansonsten gibt es fuer den speziellen Anwendungsfall noch
die eingebaute Funktion __import__(), oder einige weitere
Funktionen mit aehnlichem Zweck im Standard-Modul "imp".


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch.com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/





More information about the Python-de mailing list