Seite 1 von 1

eval und import

Verfasst: Montag 28. April 2008, 13:22
von alexander255
Hallo,

ich plage mich seit einiger Zeit mit einem Befel herum der bei ausführen als Syntax-Fehler dargestellt wird:

Code: Alles auswählen

eval("from lang.%s import *" % [i]Sprachdatei[/i])
führt zu:
Traceback (most recent call last):
File "D:/Programme/MPE/lib/msg.py", line 34, in <module>
eval("from lang.%s import *" % Sprchdatei)
File "<string>", line 1
from lang.de import *
^
SyntaxError: invalid syntax
Ist es möglich so etwas denoch zu machen?

Auch

Code: Alles auswählen

from eval("lang.%s" % [i]Sprachdatei[/i]) import *
geht nicht.


Gruß alexander

Verfasst: Montag 28. April 2008, 13:37
von lunar
Für Internationalisierung gibt es das ``gettext``-Modul. Wenn du unbedingt Python-Module verwenden willst, dann nimm lieber ``__import__``. ``eval`` sollte man nicht verwenden.

Verfasst: Montag 28. April 2008, 14:13
von Fabian Kochem
Zu erst einmal gibt es das imp-Modul, welches dir an dieser Stelle wohl am meisten weiterhelfen wird.

Eine andere Möglichkeit wäre:

Code: Alles auswählen

exec("import %s as %s" % ("foo", "bar"))
foobar = sys.modules['bar']
Viel Spaß!

Re: eval und import

Verfasst: Montag 28. April 2008, 14:51
von Sr4l
alexander255 hat geschrieben:Sprachdatei
Wo kommt das her?
Hast du das auch in deinem Code stehen?

Verfasst: Mittwoch 30. April 2008, 10:14
von sma
In Python gibt es Ausdrücke und Anweisungen. `eval` kann nur Ausdrücke auswerten. `import` ist jedoch eine Anweisung. Daher klappt es nicht. Die Der Befehl (anderes Wort für Anweisung) `exec` kann auch Anweisungen ausführen.

Stefan