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.
Benutzeravatar
alexander255
User
Beiträge: 30
Registriert: Montag 28. April 2008, 13:05

eval und import

Beitragvon alexander255 » Montag 28. April 2008, 13:22

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

Beitragvon lunar » Montag 28. April 2008, 13:37

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

Beitragvon Fabian Kochem » Montag 28. April 2008, 14:13

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:

Re: eval und import

Beitragvon Sr4l » Montag 28. April 2008, 14:51

alexander255 hat geschrieben:Sprachdatei

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

Beitragvon sma » Mittwoch 30. April 2008, 10:14

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder