2010-06-18 19 views
9

Używam Pythona 2.5.4 w systemie Windows i ciągle pojawia się błąd podczas próby importowania modułów ElementTree lub cElementTree. Kod jest bardzo prosty (Obserwuję tutorial):Python 2.5.4 - ImportError: Brak modułu o nazwie etree.ElementTree

import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

pojawia się komunikat o błędzie podczas uruchamiania go z cmd lub nie, ale kiedy próbować go bezpośrednio z interpretera Pythona.

Traceback (most recent call last): 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
ImportError: No module named etree.ElementTree 

Również sprawdziłem i moduł ma w katalogu C: \ Python25 \ Lib \ xml \ etree

+0

Nie otrzymujesz komunikatu o błędzie w temacie od uruchomienia kodu, który napisałeś. Otrzymasz tę wiadomość z 'import etree.ElementTree'. Gdy poprosisz o pomoc, skopiuj i wklej zarówno kod, jak i komunikat o błędzie i poszukiwanie błędów, nie wpisuj z pamięci. –

+0

Zmieniłeś wyświetlany kod, ale nadal nie wyświetla się komunikat o błędzie w temacie pytania. W rzeczywistości wydaje się działać. Oprócz użycia "file" jako nazwy zmiennej, wygląda OK. Czy nadal masz problem? Jeśli tak to co? Jeśli nie, po prostu zredaguj swoje pytanie, aby odzwierciedlić pierwotny problem. –

+0

Jeśli interpreter działa, a CMD nie, czy jest możliwe, że masz starą wersję Pythona działającą z cmd? – wisty

Odpowiedz

7

Przegapiłeś bardzo ważną linię w tutorialu

import xml.etree.ElementTree as xml 

To sprawia, xml .etree.ElementTree jest teraz znany jako xml w całym module.

zdarza mi się mieć Pythona 2.5.4 i sprawdzeniu, że ten sam kod masz powyżej działa:

[email protected] test$ cat test.py 
import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

[email protected] test$ /usr/bin/python2.5 --version 
Python 2.5.4 
[email protected] test$ /usr/bin/python2.5 test.py 
[email protected] test$ cat test.xml 
<root><child name="Charlie" /></root>[email protected] test$ 

więc sprawdzić i upewnić się, że działa Pythona 2.5.4 i jeśli spróbować ponowna instalacja. Problem nie polega na tym, że jest to python 2.5.4 lub twój kod. To jest jakiś problem z instalacją, używasz innej wersji pythona lub jest jakiś inny dziwny problem.

+0

Dzięki :) To jest literówka ... ale nawet wtedy nie rozpoznaje modułu ... – Jen

+0

@Jen: Opublikuj rzeczywisty kod, który został uruchomiony, traceback i komunikat o błędzie. "nie rozpoznaje modułu" jest niejednoznaczny. –

+0

Dzięki! Skończyło się na pobieraniu pakietu effbot.org ElementTree i instalowaniu go.Działa to teraz, ale wciąż nie mam pojęcia, dlaczego oryginalna biblioteka nie działała ... – Jen

4

Miałem zabawną sytuację, która może, ale nie musi być podobna do tej i znalazła moje rozwiązanie. Stworzyłem własny moduł do parsowania plików xml. Umieściłem go w my_project_root/utilities/xml.py. Gdy import xml.etree.ElementTree lub xml.etree z wewnątrz tego modułu otrzymam błąd w tytule tego postu. Wyszukiwanie było samo w sobie, więc od xml.py próbował on import etree.ElementTree i nie mógł znaleźć pakietu lub modułu o nazwie etree. Zmieniłem nazwę mojego modułu na xml_parse.py i usunąłem my_project_root/utilities/xml.pyc i działało idealnie. Proste przypomnienie o zachowaniu ostrożności przy konwencjach nazewnictwa modułów.

44

Ponieważ oryginalna nazwa pliku jest C: \ xml.py

zmienić nazwę pliku do innej nazwy

+16

O Boże, ból. Nie zapomnij także usunąć pliku "xml.pyc"! – BastiBen

+2

Po prostu wpadłem na ten sam problem. Logiczne wydaje mi się nazwanie mojego skryptu xml.py, ponieważ miałem zamiar użyć go do wypróbowania bibliotek XML po raz pierwszy, aby się ich nauczyć. Nie myślałem o nazwie skryptu wkręcającego się w przestrzeń nazw Pythona. :) Dzięki za zauważenie tego. – odigity

10

mam ten sam błąd report("ImportError: No module named etree.ElementTree") gdy nazwanie pliku testowego jako xml.py. I zmieniło się ustalone kiedy zmieniłem nazwę na coś innego jak xmltest.py.

Powiązane problemy