Problem beim import von xml.dom.minidom

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
isbn345
User
Beiträge: 4
Registriert: Samstag 24. April 2010, 17:20

Hallo,

ich benutze Python 2.5.4 mit Windows Vista. Bisher hatte ich keine Probleme, Beispielscripts auszuführen. Wenn ich aber versuche, den XML-Parser "minidom" mittels der Anweisung

from xml.dom.minidom import *

zu laden, erhalte ich die Fehlermeldung
"ImportError: No module named dom.minidom"

Mittlerweile habe ich ohne Erfolg alle Variationen des Befehls ausprobiert und auch die sys.path Variable modifiziert. Es hat den Anschein, als würden Module in Unterverzeichnissen nicht gesucht / gefunden.

Es wäre schön, wenn mir jemand helfen könnte.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Die Fehlermeldung passt nicht zur Anweisung!

Zudem sind * import generell eher schlecht.

Als letztes: Muss es denn minidom sein? Wieso nicht die ElementTree-API, ggf. sogar mit dem hervorragenden lxml-Modul?
isbn345
User
Beiträge: 4
Registriert: Samstag 24. April 2010, 17:20

Danke für die prompte Antwort. Es muss durchaus nicht "minidoom" sein. Ich habe lediglich versucht, ein Beispiel aus einem Buch nachzuvollziehen.
Könnte es sein, dass mit der Installation etwas nicht stimmt ?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

isbn345 hat geschrieben:Danke für die prompte Antwort. Es muss durchaus nicht "minidoom" sein. Ich habe lediglich versucht, ein Beispiel aus einem Buch nachzuvollziehen.
Ich meinte folgendes:

Code: Alles auswählen

In [3]: from foo.bar import *
---------------------------------------------------------------------------                                                                 
ImportError                               Traceback (most recent call last)

/home/nelson/<ipython console> in <module>()

ImportError: No module named foo.bar
Deine Fehlermeldung passt folglich nicht zum angegebenen import-Statement!
Könnte es sein, dass mit der Installation etwas nicht stimmt ?
Das kann natürlich immer sein. Wie hast Du es denn installiert?

Zumdem: Die aktuelle Version von Python 2.x ist die 2.6.5. Ich würde mal das "alte" Python deinstallieren und das aktuelle aufspielen - ganz unabhängig von der obigen Meldung.
isbn345
User
Beiträge: 4
Registriert: Samstag 24. April 2010, 17:20

Die aktuelle Version 2.6.5 verhält leider ganz genauso.

Ausführlich:

from xml.dom import minidoom

Meldung:

Traceback (most recent call last):
File "C:\Users\isbn345\Documents\Python\xml.py", line 1, in <module>
from xml.dom import minidoom
File "C:\Users\isbn345\Documents\Python\xml.py", line 1, in <module>
from xml.dom import minidoom
ImportError: No module named dom

Installiert habe ich gemäß der Anleitung auf python.org mit Administratorrechten.

LXML habe ich jetzt auch installiert. Das auf der Internetseite enthaltene Script

try:
from lxml import etree
print("running with lxml.etree")
except ImportError:
try:
# Python 2.5
import xml.etree.cElementTree as etree
print("running with cElementTree on Python 2.5+")
except ImportError:
try:
# Python 2.5
import xml.etree.ElementTree as etree
print("running with ElementTree on Python 2.5+")
except ImportError:
try:
# normal cElementTree install
import cElementTree as etree
print("running with cElementTree")
except ImportError:
try:
# normal ElementTree install
import elementtree.ElementTree as etree
print("running with ElementTree")
except ImportError:
print("Failed to import ElementTree from any known place")

liefert die die Fehlermeldung "Failed to import ElementTree from any known place".

Was stimmt nicht ???
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

isbn345 hat geschrieben: Was stimmt nicht ???
Du darfst dein Script nicht so nennen, wie ein Modul, das Du importierst!

Zudem heißt es nicht "doom" ;-)
lunar

Minidoom ist Doom 3 für Vorschulkinder, oder wie? ;)
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@lunar: Halt ohne Blut und mit Teletubbies als Endboss :twisted:

@isbn345: Versuchs mal mit einem 'o' weniger ;)
DOM steht für Document Object Model und im Falle von minidom für eine Leichtgewichtversion in Python. Seit der Erfindung der ElementTree-API gelten allerdings die anderen XML-Parser-APIs als altbacken und sind nur noch selten mit Mehrwert einzusetzen (Deine Beispiele sind wohl etwas älter). Die ElementTree-API findest Du unter xml.etree.ElementTree, xml.etree.cElementTree (als schnellere C Variante) oder in Drittpaketen wie lxml, wobei lxml für größere Sachen durchaus empfehlenswert ist, da es neben dem Geschwindigkeitsvorteil auch noch weitere nette Sachen wie XSLT und XPATH mitbringt.
isbn345
User
Beiträge: 4
Registriert: Samstag 24. April 2010, 17:20

Danke für die Antworten. Nachdem ich die Scripts umbenannt habe, läuft es problemlos. Peinlicher Anfängerfehler...
Antworten