eval und import

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

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
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.
Fabian Kochem
User
Beiträge: 36
Registriert: Mittwoch 5. April 2006, 14:11
Wohnort: Köln

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ß!
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

alexander255 hat geschrieben:Sprachdatei
Wo kommt das her?
Hast du das auch in deinem Code stehen?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Antworten