2010-06-18 3 views
9

Sto eseguendo Python 2.5.4 su Windows e continuo a ricevere un errore durante il tentativo di importare i moduli ElementTree o cElementTree. Il codice è molto semplice (Sto seguendo un tutorial):Python 2.5.4 - ImportError: nessun modulo denominato 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() 

ottengo il messaggio di errore quando l'eseguo dal cmd o ma non quando ho direttamente provare dal interprete Python.

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 

Inoltre, ho controllato e il modulo è lì in C: \ Python25 \ Lib \ xml \ eTree

+0

Non si ottiene il messaggio di errore nell'oggetto da eseguire il codice che si è registrato. Riceverai quel messaggio da "import etree.ElementTree". Quando chiedi aiuto, copia/incolla sia il codice che il traceback e il messaggio di errore, non digitare dalla memoria. –

+0

Hai modificato il codice visualizzato ma ancora non genera il messaggio di errore nell'oggetto della domanda. In realtà sembra funzionare. Oltre all'utilizzo di "file" come nome di variabile, sembra OK. Hai ancora un problema? E allora? In caso contrario, avresti dovuto modificare la tua domanda in modo che riflettesse qual era il problema originale. –

+0

Se l'interprete funziona, e cmd no, è possibile che tu abbia una vecchia versione di python in esecuzione da cmd? – wisty

risposta

7

vi siete persi la linea molto importante nel tutorial

import xml.etree.ElementTree as xml 

Questo rende xml .etree.ElementTree ora noto come xml in tutto il modulo.

mi capita di avere python 2.5.4 e ho verificato che lo stesso codice si dispone sopra funziona:

[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$ 

in modo da controllare e assicurarsi che si sta eseguendo python 2.5.4 e se siete provare reinstallazione. Il problema non è che sia Python 2.5.4 o il tuo codice. È un problema di installazione, si sta eseguendo una versione diversa di Python, o c'è qualche altro strano problema.

+0

Grazie :) Questo è un refuso ... ma anche così non riconosce il modulo ... – Jen

+0

@Jen: inserisci il codice effettivo che hai eseguito, il traceback e il messaggio di errore. "non riconosce il modulo" è ambiguo. –

+0

Grazie! Ho finito per scaricare il pacchetto ElementTree di effbot.org e l'ho installato.Funziona ora, ma non ho ancora idea del motivo per cui la libreria originale non funzionava ... – Jen

4

Ho avuto una situazione divertente, che può essere o non essere simile a questo e ha trovato la mia soluzione. Ho creato il mio modulo per analizzare i file xml. L'ho messo in my_project_root/utilities/xml.py. Quando import xml.etree.ElementTree o xml.etree all'interno di questo modulo otterrei l'errore nel titolo di questo post. Stava cercando da solo, quindi da xml.py si stava tentando di import etree.ElementTree, e non è stato possibile trovare un pacchetto o un modulo chiamato etree. Ho cambiato il nome del mio modulo in xml_parse.py e cancellato my_project_root/utilities/xml.pyc e ha funzionato perfettamente. Un semplice promemoria di usare cautela con le convenzioni di denominazione dei moduli.

44

Perché il nome del file originale è C: \ xml.py

Modificare il nome del file da qualsiasi altro nome

+16

Oh dio il dolore. Inoltre, non dimenticare di rimuovere anche il file "xml.pyc"! – BastiBen

+2

Ho appena incontrato lo stesso identico problema. Mi è sembrato logico nominare il mio script xml.py dal momento che stavo per usarlo per provare le librerie xml per la prima volta per impararle. Non pensavo al nome della sceneggiatura che si incollava con lo spazio dei nomi di Python. :) Grazie per aver notato questo. – odigity

10

ho ottenuto lo stesso errore report("ImportError: No module named etree.ElementTree") per la denominazione del file di test come xml.py. E ha ottenuto corretto quando l'ho rinominato in qualcos'altro come xmltest.py.